Autenticação com grupos de usuários do Amazon Cognito - Amazon Cognito

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Autenticação com grupos de usuários do Amazon Cognito

O Amazon Cognito inclui vários métodos para autenticar os usuários. Os usuários podem fazer login com WebAuthn senhas e chaves de acesso. O Amazon Cognito pode enviar a eles uma senha de uso único por e-mail ou SMS. Você pode implementar funções do Lambda que orquestram sua própria sequência de desafios e respostas. Esses são fluxos de autenticação. Nos fluxos de autenticação, os usuários fornecem um segredo e o Amazon Cognito verifica o segredo e, em seguida, emite tokens web JSON (JWTs) para os aplicativos processarem com bibliotecas do OIDC. Neste capítulo, falaremos sobre como configurar grupos de usuários e clientes da aplicação para vários fluxos de autenticação em vários ambientes de aplicações. Você aprenderá sobre as opções para o uso das páginas de login hospedadas do login gerenciado e para criar sua própria lógica e front-end em um AWS SDK.

Todos os grupos de usuários, independentemente de você ter um domínio ou não, podem autenticar usuários na API de grupos de usuários. Se adicionar um domínio ao grupo de usuários, você poderá usar os endpoints do grupo de usuários. A API de grupos de usuários é compatível com uma variedade de modelos de autorização e fluxos de solicitações de API.

Para verificar a identidade dos usuários, o Amazon Cognito é compatível com fluxos de autenticação que incorporam tipos de desafio, além de senhas, como senhas de uso único e chaves de acesso enviadas por e-mail e SMS.

Implementar fluxos de autenticação

Se você está implementando o login gerenciado ou um front-end de aplicativo personalizado com um AWS SDK para autenticação, você deve configurar seu cliente de aplicativo para os tipos de autenticação que deseja implementar. As informações a seguir descrevem a configuração dos fluxos de autenticação em seus clientes da aplicação e em sua aplicação.

App client supported flows

Você pode configurar fluxos compatíveis para seus clientes de aplicativos no console do Amazon Cognito ou com a API em um AWS SDK. Após configurar o cliente da aplicação para oferecer suporte a esses fluxos, você poderá implantá-los em sua aplicação.

O procedimento a seguir configura os fluxos de autenticação disponíveis para um cliente da aplicação com o console do Amazon Cognito.

Como configurar um cliente da aplicação para fluxos de autenticação (console)
  1. Faça login AWS e navegue até o console de grupos de usuários do Amazon Cognito. Selecione um grupo de usuários ou crie um.

  2. Na configuração do grupo de usuários, clique no menu Clientes da aplicação. Selecione um cliente da aplicação ou crie um.

  3. Em Informações do cliente de aplicação, clique em Editar.

  4. Em Fluxos do cliente da aplicação, escolha os fluxos de autenticação que você deseja oferecer suporte.

Como configurar um cliente da aplicação para fluxos de autenticação (API/SDK)

Para configurar os fluxos de autenticação disponíveis para um cliente de aplicativo com a API do Amazon Cognito, defina o valor de ExplicitAuthFlows em uma solicitação CreateUserPoolClientor UpdateUserPoolClient. Veja a seguir um exemplo que fornece senha remota segura (SRP) e autenticação baseada em opções para um cliente.

"ExplicitAuthFlows": [ "ALLOW_USER_AUTH", "ALLOW_USER_SRP_AUTH ]

Ao configurar fluxos compatíveis com o cliente da aplicação, você poderá especificar os valores da API e as opções abaixo.

Suporte ao fluxo do cliente da aplicação
Fluxo de autenticação Compatibilidade Console solicitações de
Autenticação baseada em opções Lado do servidor, lado do cliente Selecionar um tipo de autenticação no login ALLOW_USER_AUTH
Fazer login com senhas persistentes Lado do cliente Fazer login com nome de usuário e senha ALLOW_USER_PASSWORD_AUTH
Fazer login com senhas persistentes e carga útil segura Lado do servidor, lado do cliente Fazer login com senha remota segura (SRP) ALLOW_USER_SRP_AUTH
Atualizar tokens Lado do servidor, lado do cliente Receber novos tokens de usuário de sessões autenticadas existentes ALLOW_REFRESH_TOKEN_AUTH
Autenticação no lado do servidor Lado do servidor Fazer login com credenciais administrativas do lado do servidor ALLOW_ADMIN_USER_PASSWORD_AUTH
Autenticação personalizada Aplicações personalizadas dos lados do servidor e do cliente. Não é compatível com o login gerenciado. Fazer login com fluxos de autenticação personalizados dos acionadores do Lambda ALLOW_CUSTOM_AUTH
Implement flows in your application

O login gerenciado disponibiliza automaticamente as opções de autenticação configuradas em suas páginas de login. Em aplicações personalizadas, inicie a autenticação com uma declaração do fluxo inicial.

  • Para escolher entre uma lista de opções de fluxo para um usuário, declare a autenticação baseada em opções com o fluxo USER_AUTH. Esse fluxo tem métodos de autenticação disponíveis que não estão disponíveis nos fluxos de autenticação baseada em clientes, por exemplo, autenticação por chave de acesso e autenticação sem senha.

  • Para escolher seu fluxo de autenticação com antecedência, declare a autenticação baseada em clientes juntamente com qualquer outro fluxo disponível no cliente da aplicação.

Quando você faz login com usuários, o corpo da sua AdminInitiateAuthsolicitação InitiateAuthou solicitação deve incluir um AuthFlow parâmetro.

Autenticação baseada em opções:

"AuthFlow": "USER_AUTH"

Autenticação baseada em clientes com SRP:

"AuthFlow": "USER_SRP_AUTH"

Coisas a saber sobre a autenticação com grupos de usuários

Considere as informações a seguir no design do modelo de autenticação com grupos de usuários do Amazon Cognito.

Fluxos de autenticação no login gerenciado e na IU hospedada

O login gerenciado tem mais opções de autenticação do que a IU hospedada clássica. Por exemplo, os usuários podem fazer autenticação sem senha e com chave de acesso somente no login gerenciado.

Fluxos de autenticação personalizados disponíveis somente na autenticação AWS do SDK

Não é possível criar fluxos de autenticação personalizados, nem autenticação personalizada com acionadores do Lambda, usando o login gerenciado ou a IU hospedada clássica. A autenticação personalizada está disponível na autenticação com AWS SDKs.

Login gerenciado para login do provedor de identidades (IdP) externo

Você não pode fazer login de usuários por meio de terceiros IdPs na autenticação com AWS SDKs. Você deve implementar o login gerenciado ou a interface de usuário hospedada clássica, redirecionar IdPs e processar o objeto de autenticação resultante com as bibliotecas do OIDC em seu aplicativo. Para obter mais informações sobre o login gerenciado, consulte Login gerenciado do grupo de usuários.

Efeito da autenticação sem senha em outros recursos do usuário

A ativação do login sem senha com senhas de uso único ou chaves de acesso no grupo de usuários e no cliente da aplicação afeta a criação e a migração de usuários. Quando o login sem senha está ativo:

  1. Os administradores podem criar usuários sem senhas. O modelo de mensagem de convite padrão é alterado para não incluir mais o espaço reservado para senha {###}. Para obter mais informações, consulte Como criar contas de usuário como administrador.

  2. Para SignUpoperações baseadas em SDK, os usuários não precisam fornecer uma senha ao se inscreverem. O login gerenciado e a IU hospedada exigem uma senha na página de cadastro, mesmo que a autenticação sem senha seja permitida. Para obter mais informações, consulte Como cadastrar e confirmar contas de usuários.

  3. Os usuários importados de um arquivo CSV podem fazer login imediatamente com opções sem senha, sem a necessidade de redefinição de senha, se seus atributos incluírem um endereço de e-mail ou número de telefone para uma opção de login sem senha disponível. Para obter mais informações, consulte Como importar usuários para grupos de usuários com base em um arquivo CSV.

  4. A autenticação sem senha não invoca o acionador do Lambda de migração de usuários.

  5. Os usuários que fazem login com um primeiro fator sem senha não podem adicionar um fator de autenticação multifator (MFA) à sessão. Somente fluxos de autenticação baseada em senha são compatíveis com MFA.

A parte confiável da chave de acesso não URLs pode estar na lista pública de sufixos

Você pode usar nomes de domínio que você possui, como www.example.com, como o ID de parte confiável (RP) na configuração da chave de acesso. Essa configuração se destina a oferecer suporte a aplicações personalizadas executadas em domínios que você possui. A lista de sufixos públicos, ou PSL, contém domínios de alto nível protegidos. O Amazon Cognito retorna um erro quando você tenta definir o URL de RP como um domínio na PSL.

Duração do fluxo da sessão de autenticação

Dependendo dos recursos do grupo de usuários, você pode acabar respondendo a vários desafios para InitiateAuth e RespondToAuthChallenge antes da aplicação recuperar tokens do Amazon Cognito. O Amazon Cognito inclui uma string de sessão na resposta a cada solicitação. Para combinar suas solicitações de API em um fluxo de autenticação, inclua a string da sessão da resposta à solicitação anterior em cada solicitação subsequente. Por padrão, os usuários têm três minutos para concluir cada desafio antes que a string da sessão expire. Para ajustar esse período, altere o cliente da aplicação Authentication flow session duration (Duração da sessão do fluxo de autenticação). O procedimento a seguir descreve como alterar essa definição na configuração do cliente da aplicação.

nota

As configurações de duração da sessão do fluxo de autenticação se aplicam à autenticação com a API de grupos de usuários do Amazon Cognito. O login gerenciado define a duração da sessão como 3 minutos para autenticação multifator e 8 minutos para códigos de redefinição de senha.

Amazon Cognito console
Como configurar a duração da sessão do fluxo de autenticação do cliente da aplicação (Console de gerenciamento da AWS)
  1. Na guia App integration (Integração de aplicações) no grupo de usuários, selecione o nome do cliente da aplicação no contêiner App clients and analytics (Clientes e análise de aplicações).

  2. Selecione Editar no contêiner Informações do cliente da aplicação.

  3. Altere o valor de Duração da sessão de fluxo de autenticação para a duração de validade desejada, em minutos, para códigos de MFA por e-mail ou SMS. Isso também altera a quantidade de tempo que qualquer usuário tem para concluir qualquer desafio de autenticação no cliente da aplicação.

  4. Escolha Salvar alterações.

User pools API
Como configurar a duração da sessão do fluxo de autenticação do cliente da aplicação (API do Amazon Cognito)
  1. Prepare uma solicitação UpdateUserPoolClient com as configurações existentes de seu grupo de usuários usando uma solicitação DescribeUserPoolClient. A solicitação UpdateUserPoolClient deve incluir todas as propriedades existentes do cliente da aplicação.

  2. Altere o valor de AuthSessionValidity para a duração de validade desejada, em minutos, para códigos de MFA por SMS. Isso também altera a quantidade de tempo que qualquer usuário tem para concluir qualquer desafio de autenticação no cliente da aplicação.

Para obter mais informações sobre clientes de aplicação, consulte Configurações específicas da aplicação com clientes de aplicação.

Comportamento de bloqueio em tentativas fracassadas de login

Após cinco tentativas de login com falha com a senha do usuário, independentemente de serem solicitadas com operações de API não autenticadas ou autorizadas pelo IAM, o Amazon Cognito bloqueia o usuário por 1 segundo. A duração do bloqueio dobra após cada tentativa adicional fracassada, até um máximo de aproximadamente 15 minutos.

As tentativas feitas durante um período de bloqueio geram uma exceção Password attempts exceeded e não afetam a duração dos períodos de bloqueio subsequentes. Para um número cumulativo de tentativas fracassadas de login n, sem incluir exceções Password attempts exceeded, o Amazon Cognito bloqueia o usuário por 2^(n-5) segundos. Para redefinir o bloqueio como o estado inicial n=0, o usuário deve fazer login com êxito após o término do período de bloqueio ou não iniciar nenhuma tentativa de login por 15 minutos consecutivos a qualquer momento após um bloqueio. Esse comportamento está sujeito a alterações. Esse comportamento não se aplica aos desafios personalizados, a menos que eles também realizem a autenticação baseada em senha.

Um exemplo de sessão de autenticação

O diagrama e o step-by-step guia a seguir ilustram um cenário típico em que um usuário faz login em um aplicativo. A aplicação de exemplo apresenta ao usuário várias opções de login. Ele seleciona uma inserindo suas credenciais, fornece um fator de autenticação adicional e faz login.

Um fluxograma que mostra um aplicativo que solicita a entrada do usuário e faz login com um AWS SDK.

Imagine uma aplicação com uma página de login na qual os usuários podem fazer login com nome de usuário e senha, solicitar um código de uso único enviado por e-mail ou escolher uma opção de impressão digital.

  1. Solicitação de login: a aplicação mostra uma tela inicial com um botão Fazer login.

  2. Solicitar login: o usuário seleciona Fazer login. Com base em um cookie ou cache, a aplicação recupera o nome de usuário ou solicita que ele o insira.

  3. Opções de solicitação: a aplicação solicita as opções de login do usuário por meio de uma solicitação de API InitiateAuth com o fluxo USER_AUTH, solicitando os métodos de login disponíveis para o usuário.

  4. Enviar opções de login: o Amazon Cognito responde com PASSWORD, EMAIL_OTP e WEB_AUTHN. A resposta inclui um identificador de sessão para você reproduzir na próxima resposta.

  5. Opções de exibição: a aplicação mostra elementos de IU para que o usuário insira seu nome de usuário e senha, obtenha um código de uso único ou escaneie sua impressão digital.

  6. Escolha option/Enter as credenciais: o usuário insere seu nome de usuário e senha.

  7. Iniciar autenticação: a aplicação fornece as informações de login do usuário por meio de uma solicitação de API RespondToAuthChallenge que confirma o login com nome de usuário e senha e fornece o nome de usuário e a senha.

  8. Validar credenciais: o Amazon Cognito confirma as credenciais do usuário.

  9. Desafio adicional: o usuário tem a autenticação multifator configurada com uma aplicação autenticadora. O Amazon Cognito retorna um desafio SOFTWARE_TOKEN_MFA.

  10. Solicitação de desafio: a aplicação exibe um formulário solicitando uma senha de uso único com marcação temporal (TOTP) da aplicação autenticadora do usuário.

  11. Responder ao desafio: o usuário envia a TOTP.

  12. Responder ao desafio: em outra solicitação RespondToAuthChallenge, a aplicação fornece a TOTP do usuário.

  13. Validar a resposta ao desafio: o Amazon Cognito confirma o código do usuário e determina que o grupo de usuários está configurado para não emitir desafios adicionais para o usuário atual.

  14. Emitir tokens: o Amazon Cognito retorna tokens web JSON de ID, acesso e atualização (). JWTs A autenticação inicial do usuário está concluída.

  15. Armazenar tokens: a aplicação armazena em cache os tokens do usuário para poder referenciar os dados do usuário, autorizar o acesso a recursos e atualizar os tokens quando eles expirarem.

  16. Renderizar conteúdo autorizado: a aplicação determina o acesso do usuário aos recursos com base em sua identidade e funções e fornece o conteúdo da aplicação.

  17. Acessar conteúdo: o usuário está conectado e começa a usar a aplicação.

  18. Solicitar conteúdo com token expirado: posteriormente, o usuário solicita um recurso que requer autorização. O token em cache do usuário expirou.

  19. Tokens de atualização: a aplicação faz uma solicitação InitiateAuth com o token de atualização salvo do usuário.

  20. Emitir tokens: o Amazon Cognito retorna novo ID e acesso. JWTs A sessão do usuário é atualizada com segurança sem solicitações adicionais de credenciais.

Você pode usar acionadores do AWS Lambda para personalizar a maneira como os usuários se autenticam. Esses triggers emitem e verificam seus próprios desafios como parte do fluxo de autenticação.

Também é possível usar o fluxo de autenticação de administrador para servidores de backend seguros. É possível usar o fluxo de autenticação de migração do usuário para permitir essa migração sem exigir que os usuários redefinam suas senhas.