Gerenciar métodos de autenticação em SDKs da AWS - 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á.

Gerenciar métodos de autenticação em SDKs da AWS

Os usuários nos grupos de usuários do Amazon Cognito podem fazer login com uma variedade de opções de login inicial, ou fatores. Para alguns fatores, os usuários podem complementar com a autenticação multifator (MFA). Esses primeiros fatores incluem nome de usuário e senha, senha de uso único, chave de acesso e autenticação personalizada. Para obter mais informações, consulte Fluxos de autenticação. Quando a aplicação tem componentes de IU integrados e importa um módulo do AWS SDK, você deve criar uma lógica de autenticação da aplicação. Você deve escolher um dos dois métodos principais e, a partir desse método, os mecanismos de autenticação que deseja implementar.

Você pode implementar a autenticação baseada em clientes, onde sua aplicação, ou cliente, declara o tipo de autenticação com antecedência. Sua outra opção é a autenticação baseada em opções, onde sua aplicação coleta um nome de usuário e solicita os tipos de autenticação disponíveis para os usuários. Você pode implementar esses modelos juntos no mesma aplicação ou dividi-los entre clientes da aplicação, de acordo com seus requisitos. Cada método tem recursos exclusivos, como autenticação personalizada na autenticação baseada em clientes e autenticação sem senha na autenticação baseada em opções.

Em aplicações personalizadas que realizam autenticação com a implementação do AWS SDK da API de grupos de usuários, você deve estruturar suas solicitações de API de acordo com a configuração do grupo de usuários, a configuração do cliente da aplicação e as preferências do lado do cliente. Uma sessão InitiateAuth que começa com um AuthFlow de USER_AUTH inicia a autenticação baseada em opções. O Amazon Cognito responde à API com um desafio que consiste em um método de autenticação preferencial ou uma lista de opções. Uma sessão que começa com AuthFlow de CUSTOM_AUTH inicia diretamente a autenticação personalizada com acionadores do Lambda.

Alguns métodos de autenticação são fixos em um dos dois tipos de fluxo, e alguns métodos estão disponíveis em ambos.

Autenticação baseada em opções

Sua aplicação pode solicitar os métodos de autenticação a seguir na autenticação baseada em opções. Declare essas opções no parâmetro PREFERRED_CHALLENGE de InitiateAuth ou AdminInitiateAuth, ou no parâmetro ChallengeName de RespondToAuthChallenge ou AdminRespondToAuthChallenge.

Para analisar essas opções no contexto da API, consulte ChallengeName em RespondToAuthChallenge.

O login baseado em opções gera um desafio em resposta à solicitação inicial. Esse desafio verifica se a opção solicitada está disponível ou fornece uma lista das opções disponíveis. Sua aplicação pode exibir essas opções para os usuários, que então inserem as credenciais do método de login preferencial e prosseguem com a autenticação nas respostas do desafio.

Você tem as seguintes opções de autenticação baseada em opções em seu fluxo de autenticação. Todas as solicitações desse tipo exigem que sua aplicação primeiro colete um nome de usuário ou o recupere de um cache.

  1. Solicite opções somente com AuthParameters de USERNAME. O Amazon Cognito retorna um desafio SELECT_CHALLENGE. A partir daí, sua aplicação pode solicitar que o usuário selecione um desafio e então retornar essa resposta ao grupo de usuários.

  2. Solicite um desafio preferencial com AuthParameters de PREFERRED_CHALLENGE e os parâmetros de seu desafio preferencial, se houver. Por exemplo, se você solicitar um PREFERRED_CHALLENGE de PASSWORD_SRP, também deverá incluir SRP_A. Se seu usuário, grupo de usuários e cliente da aplicação estiverem todos configurados para o desafio preferencial, o Amazon Cognito responderá com a próxima etapa desse desafio, por exemplo, PASSWORD_VERIFIER no fluxo PASSWORD_SRP ou CodeDeliveryDetails nos fluxos EMAIL_OTP e SMS_OTP. Se o desafio preferencial não estiver disponível, o Amazon Cognito responderá com SELECT_CHALLENGE e uma lista dos desafios disponíveis.

  3. Primeiro, faça o login dos usuários e, em seguida, solicite suas opções de autenticação baseada em opções. Uma solicitação GetUserAuthFactors com o token de acesso de um usuário conectado retorna os fatores de autenticação baseada em opções disponíveis e suas configurações de MFA. Com essa opção, um usuário pode primeiro fazer login com nome de usuário e senha e depois ativar uma forma diferente de autenticação. Também é possível usar essa operação para verificar opções adicionais para um usuário que tenha feito login com um desafio preferencial.

Para configurar o cliente da aplicação para autenticação baseada em opções, adicione ALLOW_USER_AUTH aos fluxos de autenticação permitidos. Você também deve escolher os fatores baseados em opções que deseja permitir na configuração do grupo de usuários. O processo a seguir ilustra como escolher os fatores da autenticação baseada em opções.

Amazon Cognito console
Como configurar opções de autenticação baseada em opções em um grupo de usuários
  1. Faça login na AWS e acesse 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 Fazer login. Localize Opções para login baseado em opções e clique em Editar.

  3. A opção Senha está sempre disponível. Isso inclui os fluxos PASSWORD e PASSWORD_SRP. Selecione as Opções adicionais que deseja adicionar às opções dos usuários. Você pode adicionar Chave de acesso para WEB_AUTHN, Senha única para mensagem de e-mail para EMAIL_OTP e Senha única para mensagem SMS para SMS_OTP.

  4. Escolha Salvar alterações.

API/SDK

O corpo parcial da solicitação CreateUserPool ou UpdateUserPool a seguir configura todas as opções disponíveis para autenticação baseada em opções.

"Policies": { "SignInPolicy": { "AllowedFirstAuthFactors": [ "PASSWORD", "WEB_AUTHN", "EMAIL_OTP", "SMS_OTP" ] } },

Autenticação baseada em clientes

A autenticação baseada em clientes é compatível com os fluxos de autenticação a seguir. Declare essas opções no parâmetro AuthFlow de InitiateAuth ou AdminInitiateAuth.

  1. USER_PASSWORD_AUTH e ADMIN_USER_PASSWORD_AUTH

    Fazer login com senhas persistentes

    MFA após o login

    Este fluxo de autenticação é equivalente a PASSWORD na autenticação baseada em opções.

  2. USER_SRP_AUTH

    Fazer login com senhas persistentes e carga útil segura

    MFA após o login

    Este fluxo de autenticação é equivalente a PASSWORD_SRP na autenticação baseada em opções.

  3. REFRESH_TOKEN_AUTH

    Tokens de atualização

    Este fluxo de autenticação só está disponível na autenticação baseada em clientes.

  4. CUSTOM_AUTH

    Autenticação personalizada

    Este fluxo de autenticação só está disponível na autenticação baseada em clientes.

Com a autenticação baseada em clientes, o Amazon Cognito presume que você determinou como o usuário deseja se autenticar antes de iniciar os fluxos de autenticação. A lógica para determinar o fator de login que um usuário deseja fornecer deve ser determinada com configurações padrão ou solicitações personalizadas e, em seguida, declarada na primeira solicitação ao grupo de usuários. A solicitação InitiateAuth declara um AuthFlow de login que corresponde diretamente a uma das opções listadas, por exemplo, USER_SRP_AUTH. Com essa declaração, a solicitação também inclui os parâmetros para iniciar a autenticação, por exemplo, USERNAME, SECRET_HASH e SRP_A. O Amazon Cognito pode acompanhar essa solicitação com desafios adicionais, como PASSWORD_VERIFIER para SRP ou SOFTWARE_TOKEN_MFA para login por senha com MFA com TOTP.

Para configurar o cliente da aplicação para autenticação baseada em clientes, adicione quaisquer fluxos de autenticação diferentes de ALLOW_USER_AUTH aos fluxos de autenticação permitidos. Veja estes exemplos ALLOW_USER_PASSWORD_AUTH, ALLOW_CUSTOM_AUTH, ALLOW_REFRESH_TOKEN_AUTH. Para permitir fluxos de autenticação baseada em clientes, nenhuma configuração adicional do grupo de usuários é obrigatória.