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á.
Fluxo de autenticação de grupo de usuários
O Amazon Cognito inclui vários métodos para autenticar os usuários. Todos os grupos de usuários, independentemente de você ter um domínio ou não, podem autenticar usuários nos grupos API de usuários. Se adicionar um domínio ao grupo de usuários, você poderá usar os endpoints do grupo de usuários. Os grupos de usuários API oferecem suporte a uma variedade de modelos de autorização e fluxos de solicitação para API solicitações.
Para verificar a identidade dos usuários, o Amazon Cognito é compatível com fluxos de autenticação que incorporam novos tipos de desafio, além de senhas. A autenticação do Amazon Cognito normalmente exige que você implemente duas API operações na seguinte ordem:
Um usuário faz a autenticação respondendo a desafios sucessivos até que ela falhe ou o Amazon Cognito emita tokens para o usuário. Você pode repetir essas etapas com o Amazon Cognito, em um processo que inclui desafios diferentes, para comportar qualquer fluxo de autenticação personalizado.
Normalmente, seu aplicativo gera uma solicitação para coletar informações do seu usuário e envia essas informações em uma API solicitação ao Amazon Cognito. Considere um InitiateAuth
fluxo em um grupo de usuários em que você configurou seu usuário com autenticação multifator (MFA).
-
A aplicação solicita que o usuário informe o nome de usuário e a senha.
-
Você precisa incluir o nome de usuário e a senha como parâmetros em
InitiateAuth
. -
O Amazon Cognito retorna um desafio
SMS_MFA
e um identificador de sessão. -
Seu aplicativo solicita que o usuário insira o MFA código do telefone.
-
Você precisa incluir esse código e o identificador da sessão na solicitação
RespondToAuthChallenge
.
Dependendo dos recursos do grupo de usuários, você pode acabar respondendo a vários desafios para InitiateAuth
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 API solicitações em um fluxo de autenticação, inclua a string de 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 os grupos de usuários do Amazon Cognito. API A interface do usuário hospedada do Amazon Cognito define a duração da sessão como três minutos para autenticação multifator e oito minutos para códigos de redefinição de senha.
Para obter mais informações sobre clientes de aplicação, consulte Configurações específicas do aplicativo com clientes de aplicativos.
Você pode usar AWS Lambda gatilhos para personalizar a forma 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 a respectiva senha.
Comportamento de bloqueio do Amazon Cognito em tentativas fracassadas de login
Depois de cinco tentativas fracassadas de login não autenticado ou IAM autenticado com uma senha, o Amazon Cognito bloqueia seu usuário por um 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.
Tópicos
- Fluxo de autenticação no lado do cliente
- Fluxo de autenticação no lado do servidor
- Fluxo de autenticação personalizado
- Fluxo de autenticação integrado e desafios
- Fluxo de autenticação personalizado e desafios
- Use SRP a verificação de senha no fluxo de autenticação personalizado
- Fluxo de autenticação de administração
- Fluxo de autenticação de migração de usuários
Fluxo de autenticação no lado do cliente
O processo a seguir funciona para aplicativos do lado do cliente do usuário que você cria com AWS Amplify
-
O usuário insere suas respectivas credenciais no aplicativo.
-
O aplicativo chama a
InitiateAuth
operação com os detalhes do nome de usuário e da Senha Remota Segura (SRP).Essa API operação retorna os parâmetros de autenticação.
nota
O aplicativo gera SRP detalhes com os SRP recursos do Amazon Cognito incorporados ao. AWS SDKs
-
O aplicativo chama a operação
RespondToAuthChallenge
. Se a chamada for bem-sucedida, o Amazon Cognito retornará os tokens do usuário e o fluxo de autenticação será concluído.Se o Amazon Cognito exigir outro desafio, a chamada para
RespondToAuthChallenge
não retornará tokens. Em vez disso, a chamada retornará uma sessão. -
Se
RespondToAuthChallenge
retornar uma sessão, o aplicativo ligaRespondToAuthChallenge
novamente, desta vez com a sessão e a resposta do desafio (por exemplo, MFA código).
Fluxo de autenticação no lado do servidor
Se você não tem um aplicativo de usuário, mas usa um back-end seguro ou um aplicativo do lado do servidor em Java, Ruby ou Node.js, você pode usar o servidor autenticado para grupos de usuários do Amazon Cognito. API
Para aplicações no lado do servidor, a autenticação do grupo de usuários é semelhante à das aplicações no lado do cliente, exceto pelo seguinte:
-
O aplicativo do lado do servidor chama a
AdminInitiateAuth
API operação (em vez de).InitiateAuth
Essa operação requer AWS credenciais com permissões que incluemcognito-idp:AdminInitiateAuth
e.cognito-idp:AdminRespondToAuthChallenge
A operação retorna os parâmetros de autenticação necessários. -
Depois que o aplicativo do lado do servidor tem os parâmetros de autenticação, ele chama a
AdminRespondToAuthChallenge
API operação (em vez de).RespondToAuthChallenge
AAdminRespondToAuthChallenge
API operação só é bem-sucedida quando você fornece as AWS credenciais.
Para obter mais informações sobre a assinatura de API solicitações do Amazon Cognito com AWS credenciais, consulte Processo de assinatura do Signature versão 4 na AWS Referência geral.
As AdminRespondToAuthChallenge
API operações AdminInitiateAuth
e não podem aceitar credenciais de username-and-password usuário para login de administrador, a menos que você permita explicitamente que elas façam isso de uma das seguintes formas:
-
Inclua
ALLOW_ADMIN_USER_PASSWORD_AUTH
(anteriormente conhecido comoADMIN_NO_SRP_AUTH
) no parâmetroExplicitAuthFlow
quando você chamarCreateUserPoolClient
ouUpdateUserPoolClient
. -
Adicione
ALLOW_ADMIN_USER_PASSWORD_AUTH
à lista Fluxos de autenticação para o cliente da aplicação. Configure clientes de aplicação na guia App integration (Integração de aplicação) em seu grupo de usuários, em App clients and analytics (Clientes de aplicação e análise). Para obter mais informações, consulte Configurações específicas do aplicativo com clientes de aplicativos.
Fluxo de autenticação personalizado
Os grupos de usuários do Amazon Cognito também possibilitam o uso de fluxos de autenticação personalizados, que podem ajudar você a criar um modelo de autenticação baseado em desafios/respostas usando gatilhos. AWS Lambda
O fluxo de autenticação personalizado possibilita ciclos personalizados de desafio e resposta para atender a diferentes requisitos. O fluxo começa com uma chamada para a InitiateAuth
API operação que indica o tipo de autenticação a ser usado e fornece todos os parâmetros de autenticação inicial. O Amazon Cognito responde à chamada do InitiateAuth
com um dos seguintes tipos de informação:
-
Um desafio para o usuário com uma sessão e parâmetros
-
Um erro se houver falha na autenticação do usuário.
-
ID, acesso e tokens de atualização, se os parâmetros fornecidos na chamada de
InitiateAuth
forem suficientes para que o usuário faça login. (Normalmente, o usuário ou a aplicação deve primeiro responder a um desafio, mas seu código personalizado deve determinar isso.)
Se o Amazon Cognito responder à chamada InitiateAuth
com um desafio, a aplicação reunirá mais entradas e chamará a operação RespondToAuthChallenge
. Essa chamada fornece as respostas do desafio e repassa a sessão. O Amazon Cognito responde à chamada RespondToAuthChallenge
de forma semelhante à chamada InitiateAuth
. Se o usuário tiver feito login, o Amazon Cognito fornecerá tokens ou, se o usuário não estiver conectado, o Amazon Cognito apresentará outro desafio ou um erro. Se o Amazon Cognito retornar outro desafio, a sequência se repetirá e a aplicação chamará RespondToAuthChallenge
até que o usuário faça login com êxito ou um erro seja retornado. Para obter mais detalhes sobre as RespondToAuthChallenge
API operações InitiateAuth
e, consulte a APIdocumentação.
Fluxo de autenticação integrado e desafios
O Amazon Cognito contém ChallengeName
valores integrados AuthFlow
para que um fluxo de autenticação padrão possa validar um nome de usuário e uma senha por meio do protocolo Secure Remote Password ()SRP. Eles AWS SDKs têm suporte integrado para esses fluxos com o Amazon Cognito.
O fluxo inicia-se com o envio de USER_SRP_AUTH
como o AuthFlow
para InitiateAuth
. Você também envia os valores USERNAME
e SRP_A
em AuthParameters
. Se a chamada de InitiateAuth
for bem-sucedida, a resposta incluiu PASSWORD_VERIFIER
como ChallengeName
e SRP_B
nos parâmetros do desafio. Depois, o aplicativo chama RespondToAuthChallenge
com o ChallengeName
PASSWORD_VERIFIER
e os parâmetros necessários em ChallengeResponses
. Se a chamada para RespondToAuthChallenge
for bem-sucedida e o usuário fizer login, o Amazon Cognito emitirá tokens. Se você ativou a autenticação multifatorial (MFA) para o usuário, o Amazon Cognito retornará ChallengeName
o de. SMS_MFA
A aplicação pode fornecer o código necessário por meio de outra chamada para RespondToAuthChallenge
.
Fluxo de autenticação personalizado e desafios
Um aplicativo pode iniciar um fluxo de autenticação personalizado chamando InitiateAuth
com CUSTOM_AUTH
como o Authflow
. Com um fluxo de autenticação personalizado, três acionadores do Lambda controlam os desafios e a verificação das respostas.
-
O acionador
DefineAuthChallenge
do Lambda usa como entrada uma matriz de sessão de desafios e respostas anteriores. Depois, ele gera o nome do próximo desafio e os boolianos que indicam se o usuário está autenticado e pode receber tokens. Esse acionador do Lambda é uma máquina de estado que controla o caminho do usuário por meio dos desafios. -
O acionador
CreateAuthChallenge
do Lambda usa um nome de desafio como entrada e gera o desafio e os parâmetros para avaliar a resposta. QuandoDefineAuthChallenge
retornaCUSTOM_CHALLENGE
como o próximo desafio, o fluxo de autenticação chamaCreateAuthChallenge
. O acionadorCreateAuthChallenge
do Lambda passa o próximo tipo de desafio no parâmetro de metadados de desafio. -
A função do
VerifyAuthChallengeResponse
Lambda avalia a resposta e retorna um booleano para indicar se a resposta foi válida.
Um fluxo de autenticação personalizado também pode usar uma combinação de desafios integrados, como verificação e MFA verificação de SRP senhaSMS. Ele pode usar desafios personalizados, como CAPTCHA perguntas secretas.
Use SRP a verificação de senha no fluxo de autenticação personalizado
Se você quiser incluir SRP em um fluxo de autenticação personalizado, você deve começar comSRP.
-
Para iniciar a verificação de SRP senha em um fluxo personalizado, o aplicativo liga
InitiateAuth
comCUSTOM_AUTH
asAuthflow
. NoAuthParameters
mapa, a solicitação do seu aplicativo incluiSRP_A:
(o valor SRP A)CHALLENGE_NAME: SRP_A
e. -
O fluxo de
CUSTOM_AUTH
invoca o acionador do LambdaDefineAuthChallenge
com uma sessão inicial dechallengeName: SRP_A
echallengeResult: true
. Sua função do Lambda responde comchallengeName: PASSWORD_VERIFIER
,issueTokens: false
efailAuthentication: false
. -
Em seguida, o aplicativo deve chamar
RespondToAuthChallenge
comchallengeName: PASSWORD_VERIFIER
e os outros parâmetros necessários SRP nochallengeResponses
mapa. -
Se o Amazon Cognito verificar a senha,
RespondToAuthChallenge
invocará o acionadorDefineAuthChallenge
do Lambda com uma segunda sessão dechallengeName: PASSWORD_VERIFIER
echallengeResult: true
. Nesse ponto, o acionador do LambdaDefineAuthChallenge
pode responder comchallengeName: CUSTOM_CHALLENGE
para iniciar o desafio personalizado. -
Se MFA estiver habilitado para um usuário, depois que o Amazon Cognito verificar a senha, seu usuário será desafiado a configurar ou fazer login com. MFA
nota
A página da Web de login hospedada do Amazon Cognito não pode ativar Acionadores do Lambda de desafio personalizado de autenticação.
Para obter mais informações sobre os acionadores do Lambda, incluindo o código de exemplo, consulte Como personalizar fluxos de trabalho do grupo de usuários com acionadores do Lambda.
Fluxo de autenticação de administração
A melhor prática para autenticação é usar as API operações descritas em Fluxo de autenticação personalizado com SRP para verificação de senha. O AWS SDKs uso dessa abordagem, e essa abordagem os ajuda a usarSRP. No entanto, se você quiser evitar SRP cálculos, um conjunto alternativo de API operações administrativas está disponível para servidores de back-end seguros. Para essas implementações administrativas de backend, use AdminInitiateAuth
no lugar de InitiateAuth
. Além disso, use AdminRespondToAuthChallenge
no lugar de RespondToAuthChallenge
. Como você pode enviar a senha como texto simples, não precisa fazer SRP cálculos ao usar essas operações. Exemplo:
AdminInitiateAuth Request { "AuthFlow":"ADMIN_USER_PASSWORD_AUTH", "AuthParameters":{ "USERNAME":"
<username>
", "PASSWORD":"<password>
" }, "ClientId":"<clientId>
", "UserPoolId":"<userPoolId>
" }
Essas operações de autenticação de administração exigem credenciais de desenvolvedor e usam o processo de assinatura do AWS
Signature Version 4 (SigV4). Essas operações estão disponíveis em formato padrão AWS
SDKs, incluindo Node.js, que é conveniente para funções Lambda. Para usar essas operações e fazer com que elas aceitem senhas em texto não criptografado, é necessário ativá-las para a aplicação no console. Como alternativa, é possível transmitir ADMIN_USER_PASSWORD_AUTH
para o parâmetro ExplicitAuthFlow
em chamadas para CreateUserPoolClient
ou UpdateUserPoolClient
. As operações InitiateAuth
e RespondToAuthChallenge
não aceitam a ADMIN_USER_PASSWORD_AUTH
AuthFlow
.
Na resposta AdminInitiateAuth
ChallengeParameters
, o atributo USER_ID_FOR_SRP
, se estiver presente, incluirá o nome do usuário real, não um alias (como o endereço de e-mail ou o número de telefone). Na chamada para AdminRespondToAuthChallenge
, nas ChallengeResponses
, é necessário transmitir esse nome de usuário no parâmetro USERNAME
.
nota
Como as implementações de administração de backend usam o fluxo de autenticação de administração, o fluxo não comporta rastreamento de dispositivo. Quando você ativa o rastreamento de dispositivo, a autenticação de administração é executada com êxito, mas qualquer chamada para atualizar o token de acesso falha.
Fluxo de autenticação de migração de usuários
Um acionador de migração de usuários do Lambda ajuda a migrar usuários de um sistema de gerenciamento de usuários herdado para seu grupo de usuários. Se você escolher o fluxo de autenticação USER_PASSWORD_AUTH
, os usuários não terão que redefinir suas senhas durante a migração de usuários. Esse fluxo envia as senhas dos usuários para o serviço por meio de uma SSL conexão criptografada durante a autenticação.
Depois de migrar todos os seus usuários, alterne os fluxos para o SRP fluxo mais seguro. O SRP fluxo não envia nenhuma senha pela rede.
Para saber mais sobre acionadores do Lambda, consulte Como personalizar fluxos de trabalho do grupo de usuários com acionadores do Lambda.
Para obter mais informações sobre como migrar usuários com um acionador do Lambda, consulte Como importar usuários com um acionador do Lambda de migração de usuários.