Perguntas frequentes sobre o Amazon Cognito

Geral

O Amazon Cognito permite que você adicione cadastro, login, controle de acesso e acesso intermediado aos serviços da AWS às suas aplicações Web e móveis em minutos. É um serviço econômico e centrado no desenvolvedor que fornece armazenamentos de identidade seguros e baseados em locatários e opções de federação que podem ser expandidas para milhões de usuários. O Amazon Cognito permite a criação de experiências de marca para o cliente, a melhoria da segurança e a adaptação às necessidades dos clientes. Por exemplo, ele é compatível com o login com provedores de identidade social e login sem senha usando chaves de acesso WebAuthn ou senhas de uso único por SMS e e-mail. O Amazon Cognito é compatível com vários padrões de conformidade, opera em padrões de identidade abertos e se integra a um extenso catálogo de recursos de desenvolvimento e bibliotecas de SDK.

Com o Amazon Cognito, você pode concentrar-se na criação de experiências de aplicação excelentes, em vez de preocupar-se com a criação, a segurança e a escalabilidade de uma solução para administrar o gerenciamento, a autenticação e a sincronização de usuários.

Você pode começar a usá-lo facilmente ao acessar o Console da AWS. Se você não tem uma conta da Amazon Web Services, pode criar uma quando fizer login no Console. Depois de criar um grupo de usuários para gerenciamento de usuários ou um banco de identidades para identidades federadas, você pode integrar sua aplicação e APIs com OAuth e OpenID Connect (OIDC).

Consulte nossos recursos de introdução para obter mais informações.

O Amazon Cognito foi criado para desenvolvedores que desejam adicionar a funcionalidade de gerenciamento e sincronização de usuários às suas aplicações móveis e da web. Os desenvolvedores podem usar o Cognito Identity para adicionar cadastro e login às aplicações e para permitir que seus usuários acessem com segurança os recursos das aplicações. O Cognito também permite que os desenvolvedores sincronizem dados em vários dispositivos, plataformas e aplicativos.

Sim. O Cognito expõe as APIs no servidor. Você pode criar sua própria interface personalizada para o Cognito chamando essas APIs diretamente. As APIs no servidor são descritas no guia do desenvolvedor.

O suporte para o Cognito está incluído no AWS Mobile SDK opcional, que está disponível para iOS, Android, Unity e Kindle Fire. O Cognito também está disponível no AWS SDK para .NET, C++, Go, Java, JavaScript, PHP v3, Python, Ruby v3 e na interface de linha de comando.

Visite nossa página de recursos para visualizar e baixar os SDKs disponíveis.

Não. O Cognito expõe suas APIs de controle e dados como serviços da web. Você pode implementar sua própria biblioteca do cliente chamando as APIs no servidor diretamente.

Adicionar cadastro e login às suas aplicações móveis e da Web

Para autenticadores de primeiro fator, o Amazon Cognito é compatível com nome de usuário/senha, OTP de e-mail sem senha, OTP de SMS sem senha e chaves de acesso WebAuthn. O Cognito é compatível com os seguintes autenticadores multifatoriais (MFA): autenticadores OTP de e-mail, OTP de SMS e TOTP. Além disso, clientes e parceiros podem implementar a compatibilidade com produtos de terceiros e autenticadores sob medida com fluxos de autenticação personalizados, usando extensões do AWS Lambda.

Sim, você pode adicionar com facilidade e segurança a funcionalidade de cadastramento e login às suas aplicações com o Amazon Cognito. Seus usuários podem fazer cadastro e login por meio de e-mail, número de telefone ou nome de usuário. Você também pode implementar recursos de segurança aprimorados, como verificação de e-mail e número de telefone, como também autenticação multifator. O Cognito permite que você personalize fluxos de trabalho, por exemplo, ao adicionar lógica específica da aplicação ao registro de usuários para a detecção de fraudes e a validação de usuários por meio do AWS Lambda. Para saber mais, acesse a nossa documentação.

Um grupo de usuários é o diretório de usuários baseado em locatários que você pode configurar para os suas aplicações móveis e da Web. Um grupo de usuários armazena com segurança os atributos do perfil de seus usuários e é compatível com um esquema personalizado. Você pode criar e gerenciar um grupo de usuários usando o Console da AWS, a AWS CLI ou o AWS SDK.

Os desenvolvedores podem usar atributos de perfil de usuário baseados no OpenID Connect padrão (como nome de usuário, número de telefone, endereço, fuso horário, etc.) ou personalizar para adicionar atributos de usuário específicos da aplicação.

Sim. É possível usar o recurso de alias para permitir que seus usuários façam cadastro ou login usando um endereço de e-mail e uma senha ou um número de telefone e uma senha.

Para saber mais, acesse a nossa documentação.

 

Sim, você pode configurar políticas de senha, como requisitos de comprimento da senha, complexidade dos caracteres e histórico de senhas durante a definição ou a configuração do seu grupo de usuários. Além disso, o Amazon Cognito é compatível com a verificação de credenciais comprometidas em cada cadastro, o login e a alteração de senha de usuário para garantir que os usuários não estejam fazendo login com uma senha comprometida em outro site.

Sim, com o Amazon Cognito você pode solicitar que os endereços de e-mail e os números de telefone dos usuários sejam verificados antes disponibilizar a eles acesso à sua aplicação. Durante o cadastro, um código de verificação será enviado ao número de telefone ou endereço de e-mail do usuário, e o usuário deverá inserir o código de verificação para concluir o cadastro e ser confirmado.

Sim, você pode permitir que os usuários finais da sua aplicação façam o cadastro com MFA baseada em SMS. Após a ativação da MFA baseada em SMS, será solicitado que seus usuários informem a senha (primeiro fator: o que eles sabem) e um código de segurança que só pode ser recebido em seus telefones celulares via SMS (segundo fator: o que eles têm).

Sim, você pode personalizar os fluxos de cadastro e login usando o AWS Lambda. Por exemplo, você pode criar funções do AWS Lambda para identificar fraude ou executar validações adicionais nos dados do usuário. Você pode acionar funções personalizadas do Lambda no pré-registro, após a confirmação (registro), na pré-autenticação, durante a autenticação e na pós-autenticação. Também é possível usar funções do Lambda para personalizar mensagens enviadas como parte da verificação de e-mail ou número de telefone e da autenticação multifator.

Sim. Você pode optar por memorizar os dispositivos usados para acessar sua aplicação. Associe esses dispositivos memorizados aos usuários da sua aplicação em um grupo de usuários do Cognito. Você também pode optar por usar dispositivos memorizados para suprimir desafios de segundo fator (autenticação adaptativa) para os seus usuários após configurar a autenticação multifator.

Há duas formas de migração de usuários de aplicações de diretório ou banco de dados de usuários atuais para grupos de usuários: migração just-in-time (JIT) e migração em massa.

O Amazon Cognito ajuda a migração dos usuários em tempo real durante o login na aplicação usando um acionador incorporado do AWS Lambda. O acionador do Lambda permite migrar os dados dos usuários de um sistema externo sem forçá-los a redefinir a senha.

Como alternativa, você pode migrar usuários em massa fazendo upload de um arquivo CSV que contém dados de perfil dos usuários das aplicações. O upload do arquivo CSV pode ser efetuado por meio do console do Amazon Cognito, das APIs ou da ILC da AWS. No primeiro login, os usuários devem verificar a conta e criar uma nova senha usando um código de verificação enviado ao seu endereço de e-mail ou número de telefone.

Para saber mais, consulte Importação de usuários para grupos de usuários.

Controlar o acesso aos recursos da AWS

Sim, os bancos de identidades do Cognito permitem que você autentique usuários por meio de um provedor de identidade externo e disponibilizam credenciais de segurança temporárias para acessar recursos de backend da sua aplicação na AWS ou qualquer serviço por trás do Amazon API Gateway. O Amazon Cognito trabalha com provedores de identidade externos compatíveis com SAML ou OpenID Connect, provedores de identidade social (como Facebook, Twitter e Amazon) e você pode também integrar seu próprio provedor de identidade.

Você pode usar Amazon, Facebook, Twitter, login com provedores de identidade social da Apple, Google, provedores de identidade OpenID Connect (OIDC), provedores de identidade SAML, grupos de usuários do Amazon Cognito e provedores de desenvolvedores personalizados.

Os bancos de identidades permitem que você crie identidades exclusivas para seus usuários e as associe com segurança aos provedores de serviços da AWS. Os clientes usam os bancos de identidades do Amazon Cognito como agente de credenciais para obter credenciais da AWS temporárias e com privilégios limitados para acessar os recursos da AWS.

Os usuários podem fazer login por meio de grupos de usuários do Amazon Cognito, provedores de identidade OIDC, provedores de identidade SAML ou provedores de identidade social e obter acesso baseado em perfil aos serviços da AWS, como buckets do Amazon S3 ou registros do Amazon DynamoDB. Pools de identidades não armazenam nenhum perfil de usuário. Um pool de identidades pode ser associado a uma ou muitas aplicações. Se você usar dois pools de identidades diferentes para dois aplicativos, o mesmo usuário final terá um identificador exclusivo diferente em cada pool de identidades.

Sua aplicação móvel é autenticada com um provedor de identidade (IdP) usando o SDK do provedor. Quando o usuário final for autenticado com o IdP, o token OpenID Connect ou a declaração SAML retornada do IdP é passada por sua aplicação ao banco de identidades do Cognito, que retorna um novo ID do Cognito para o usuário e um conjunto de credenciais da AWS temporárias e de privilégio limitado.

Os bancos de identidades do Cognito podem integrar-se ao seu sistema de autenticação existente. Com uma chamada de API simples, você pode recuperar um ID do Cognito para usuários finais de acordo com o seu próprio identificador exclusivo de usuários. Após recuperar o ID do Cognito e o token OpenID, você pode usar o SDK de cliente dos bancos de identidades do Cognito para acessar recursos da AWS e sincronizar dados de usuário.

Os bancos de identidades do Cognito atribuem aos seus usuários um conjunto de credenciais temporárias e de privilégio limitado para acessar recursos da AWS, o que torna desnecessário o uso das credenciais de conta da AWS. As permissões para cada usuário são controladas por meio de funções do AWS IAM que você mesmo cria. Você pode definir regras para escolher a função do IAM de cada usuário ou, se estiver usando grupos em um grupo de usuários do Cognito, poderá atribuir funções do IAM com base em grupos. Os bancos de identidades do Cognito também permitem que você defina um perfil do IAM separado com permissões limitadas para usuários convidados que não estejam autenticados. Além disso, você também pode usar o identificador único que o Cognito gera para os seus usuários para controlar o acesso a recursos específicos. Por exemplo, é possível criar uma política para um bucket do S3 que permita apenas que cada usuário acesse sua própria pasta dentro do bucket.

Não, sua aplicação se comunica diretamente com o provedor público de identidade compatível (Amazon, Facebook, Twitter, login com Apple, Google, SAML ou um provedor em conformidade com Open ID Connect) para autenticar usuários. O Cognito Identity não recebe nem armazena credenciais de usuário. O Cognito Identity usa o token do provedor de identidade para obter um identificador exclusivo para o usuário e, em seguida, o embaralha em uma direção para que o mesmo usuário possa ser reconhecido novamente no futuro, sem armazenar o identificador real do usuário.

Não. O Cognito Identity não recebe nenhuma informação confidencial (como endereço de e-mail, lista de amigos, etc.) dos provedores de identidade.

Os bancos de identidades do Cognito são compatíveis com a criação e o processo de venda de tokens tanto para usuários autenticados quanto para não autenticados. Isso remove o dissabor de ter uma tela de login adicional em seu aplicativo, mas ainda possibilita que você use credenciais temporárias de privilégio limitado para acessar os recursos da AWS.

Não. O Cognito Identity é compatível com login por meio do Amazon, Facebook, Twitter, Digits e Google, além de oferecer compatibilidade a usuários não autenticados. Com o Cognito Identity, você pode sustentar a autenticação federada, o armazenamento de sincronização de dados de perfil e a distribuição de token de acesso da AWS sem escrever nenhum código de back-end.

Usuários não autenticados são usuários que não fazem a autenticação com nenhum provedor de identidade, mas, em vez disso, acessam sua aplicação como um convidado. É possível definir uma função do IAM separada para esses usuários, visando disponibilizar permissões limitadas para acessar os recursos do seu back-end.

Sim, os bancos de identidades do Cognito são compatíveis com identidades separadas em um único dispositivo, como um iPad da família. Cada identidade é tratada separadamente e você tem controle total sobre como seu aplicativo conecta e desconecta os usuários, e também sobre como os dados locais e remotos do aplicativo são armazenados.

Você pode criar programaticamente um conjunto de dados associado aos bancos de identidades do Cognito e começar a salvar os dados na forma de pares de chave/valor. Os dados são armazenados tanto localmente no dispositivo quanto no armazenamento de sincronização do Cognito. O Cognito também pode sincronizar esses dados em todos os dispositivos do usuário final.

O número de identidades no console de bancos de identidades do Cognito mostra quantas identidades foram criadas por meio das APIs de bancos de identidades do Cognito. Para identidades autenticadas (aquelas com um provedor de login, como Facebook ou um provedor de OpenID Connect), cada chamada à API GetId dos bancos de identidades do Cognito criará somente uma única identidade para cada usuário. No entanto, para identidades não autenticadas, a cada vez que o cliente em uma aplicação chamar a API GetId, uma nova identidade será gerada. Portanto, se uma aplicação chamar o GetId para identidades não autenticadas várias vezes para um único usuário, parecerá que um único usuário tem várias identidades. Então é importante que você faça o cache da resposta do GetId quando usar identidades não autenticadas e não chamá-la várias vezes por usuário.

O SDK móvel oferece a lógica para fazer o cache dos dados dos bancos de identidades do Cognito automaticamente, para que você não precise se preocupar com isso. Se você está procurando uma solução de análise completa para seu aplicativo, incluindo a capacidade de rastrear usuários exclusivos, veja o Amazon Mobile Analytics.

Preços

Para obter a definição de preços para o grupo de usuários do Amazon Cognito, consulte a página de definição de preços do Amazon Cognito.

Para calcular os custos estimados, use a Calculadora de preços da AWS

 

Você paga pelos grupos de usuários do Amazon Cognito com base nos seus usuários ativos mensais. Um usuário é considerado ativo mensal se, dentro de um mês civil, a aplicação gerar uma operação de identidade para ele, como criação ou atualização administrativa, inscrição, login, atualização de token, alteração de senha, atualização de atributo da conta de usuário ou uma consulta de atributo em um usuário (API AdminGetUser). Você não é cobrado por sessões subsequentes ou por usuários inativos dentro desse mês de calendário. Geralmente, o número total de usuários e o número de operações são significativamente maiores do que o seu número total de MAUs.

Para obter os preços para a Sincronização do Amazon Cognito, consulte a página de preços do Amazon Cognito.

O uso do sistema de mensagens SMS para verificar números de telefone, enviar códigos para senhas esquecidas ou redefinição de senhas, ou para autenticação multifator é cobrado separadamente. Consulte a página de definição de preços global do SMS para obter mais informações.

Quando você chama o método synchronize() usando o AWS Mobile SDK, isso conta como uma operação de sincronização. Se você está chamando as APIs do servidor diretamente, uma operação de sincronização é iniciada quando um novo token de sessão de sincronização é emitido e é concluída com uma gravação bem-sucedida ou a expiração do tempo limite do token de sessão. Independentemente de você usar o método synchronize() do SDK ou chamar a API do servidor diretamente, as operações de sincronização são cobradas com a mesma tarifa.

Sim, os grupos de usuários SKU e Essentials SKU do Amazon Cognito são gratuitos para os primeiros 10 000 MAUs. As contas de clientes com grupos de usuários ativos do Amazon Cognito antes de 21 de novembro de 2024 estão qualificadas para o nível gratuito de 50 000 MAUs.

Como parte do nível gratuito da AWS, os clientes da AWS qualificados recebem 10 GB de armazenamento de sincronização na nuvem e 1.000.000 de operações de sincronização ao mês durante os 12 primeiros meses.

O uso de bancos de identidades do Amazon Cognito para autenticar usuários e gerar identificadores exclusivos é fornecido gratuitamente

Não há custo adicional para usar o Cognito Events para disparar funções do Lambda, mas as taxas normais para seu uso do AWS Lambda e de outros serviços da AWS serão aplicadas enquanto suas funções do Lambda estiverem sendo executadas.

Consulte a página de definição de preços do AWS Lambda para obter mais detalhes.

 

Não. Você decide quando chamar o método synchronize(). Toda gravação ou leitura do dispositivo é armazenada no armazenamento do SQLite local. Dessa forma, você tem total controle sobre os seus custos.

O Cognito usa o Amazon SNS para enviar notificações silenciosas por push. Não há cobrança adicional pelo uso do Cognito para sincronização por push, mas as notificações enviadas aos dispositivos são cobradas de acordo com as tarifas do Amazon SNS.