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á.
Acionador do Lambda para definir desafio de autenticação
O gatilho de desafio de definição de autenticação é uma função Lambda que mantém a sequência de desafios em um fluxo de autenticação personalizado. Ele declara o sucesso ou o fracasso da sequência de desafios e define o próximo desafio se a sequência ainda não estiver completa.
- Definir o desafio de autenticação
-
O Amazon Cognito invoca esse acionador para iniciar o fluxo de autenticação personalizado.
A solicitação desse acionador do Lambda contém session
. O parâmetro session
é uma matriz que contém todos os desafios apresentados ao usuário no processo de autenticação atual. A solicitação também inclui o resultado correspondente. A matriz session
armazena detalhes do desafio (ChallengeResult
) em ordem cronológica. O desafio session[0]
representa o primeiro que o usuário recebe.
Você pode fazer com que o Amazon Cognito verifique senhas de usuário antes que ele emita seus desafios personalizados. Todos os gatilhos do Lambda associados à categoria Autenticação das cotas de taxa de solicitação serão executados quando você realizar SRP a autenticação em um fluxo de desafio personalizado. Veja uma visão geral do processo:
-
Sua aplicação inicia o login chamando
InitiateAuth
ouAdminInitiateAuth
com o mapaAuthParameters
. Os parâmetros devem incluirCHALLENGE_NAME: SRP_A,
e os valores deSRP_A
eUSERNAME
. -
O Amazon Cognito invoca o acionador do Lambda de desafio de autenticação com uma sessão inicial que contém
challengeName: SRP_A
echallengeResult: true
. -
Depois de receber essas entradas, a função do Lambda responde com
challengeName: PASSWORD_VERIFIER
,issueTokens: false
,failAuthentication: false
. -
Se a verificação de senha for bem-sucedida, o Amazon Cognito invocará sua função do Lambda novamente com uma nova sessão contendo
challengeName: PASSWORD_VERIFIER
echallengeResult: true
. -
Para iniciar seus desafios personalizados, sua função do Lambda responde com
challengeName: CUSTOM_CHALLENGE
,issueTokens: false
efailAuthentication: false
. Se você não quiser iniciar seu fluxo de autenticação personalizado com a verificação de senha, poderá iniciar o login com o mapaAuthParameters
incluindoCHALLENGE_NAME: CUSTOM_CHALLENGE
. -
O loop de desafios se repetirá até que todos os desafios sejam respondidos.
Veja a seguir um exemplo de uma InitiateAuth
solicitação inicial que precede a autenticação personalizada com um SRP fluxo.
{ "AuthFlow": "CUSTOM_AUTH", "ClientId": "1example23456789", "AuthParameters": { "CHALLENGE_NAME": "SRP_A", "USERNAME": "testuser", "SRP_A": "[SRP_A]", "SECRET_HASH": "[secret hash]" } }
Tópicos
Parâmetros do acionador do Lambda para definir o desafio de autenticação
A solicitação que o Amazon Cognito transmite para essa função do Lambda é uma combinação dos parâmetros abaixo e dos parâmetros comuns que o Amazon Cognito adiciona a todas as solicitações.
Parâmetros de solicitação para definir o desafio de autenticação
Quando o Amazon Cognito invoca sua função do Lambda, ele fornece os seguintes parâmetros:
- userAttributes
-
Um ou mais pares de nome-valor que representam atributos de usuário.
- userNotFound
-
Um booleano que é preenchido pelo Amazon Cognito quando
PreventUserExistenceErrors
é definido comoENABLED
para o cliente de grupo de usuários. Um valor detrue
significa que o ID do usuário (nome de usuário, endereço de e-mail e outros detalhes) não correspondeu a nenhum usuário existente. QuandoPreventUserExistenceErrors
é definido comoENABLED
, o serviço não informa a aplicação dos usuários inexistentes. Recomendamos que suas funções do Lambda mantenham a mesma experiência do usuário e contabilizem a latência. Dessa forma, o autor da chamada não consegue detectar comportamentos diferentes quando o usuário existe ou não existe. - sessão
-
Uma matriz de elementos
ChallengeResult
. Cada regra contém os seguintes elementos:- challengeName
-
Um dos seguintes tipos de desafio:
CUSTOM_CHALLENGE
,SRP_A
,PASSWORD_VERIFIER
,SMS_MFA
,EMAIL_OTP
,SOFTWARE_TOKEN_MFA
,DEVICE_SRP_AUTH
,DEVICE_PASSWORD_VERIFIER
, ouADMIN_NO_SRP_AUTH
.Quando sua função de desafio de definição de autenticação emite um
PASSWORD_VERIFIER
desafio para um usuário que configurou a autenticação multifatorial, o Amazon Cognito segue comSMS_MFA
um desafioEMAIL_OTP
,, ou.SOFTWARE_TOKEN_MFA
Essas são as instruções para um código de autenticação multifatorial. Em sua função, inclua o tratamento de eventos de entrada deSMS_MFA
EMAIL_OTP
, eSOFTWARE_TOKEN_MFA
desafios. Você não precisa invocar nenhum MFA desafio em sua função de desafio de autenticação definida.Importante
Quando sua função estiver determinando se um usuário fez a autenticação com êxito e você precisar emitir tokens para ele, sempre confira
challengeName
em sua função “define auth challenge” e garantir que corresponda ao valor esperado. - challengeResult
-
Defina como
true
se o usuário tiver concluído o desafio com êxito; do contrário, defina-o comofalse
. - challengeMetadata
-
Seu nome para o desafio personalizado. Usado somente se
challengeName
forCUSTOM_CHALLENGE
.
- clientMetadata
-
Um ou mais pares de chave/valor que você pode fornecer como entrada personalizada para a função do Lambda especificada para o acionador definir desafio de autenticação. Para passar esses dados para sua função Lambda, você pode usar o
ClientMetadata
parâmetro nas operações AdminRespondToAuthChallengee. RespondToAuthChallengeAPI A solicitação que invoca a função de desafio define auth não inclui dados passados no ClientMetadata parâmetro in AdminInitiateAuthand operations. InitiateAuthAPI
Parâmetros de resposta para definir o desafio de autenticação
Na resposta, você pode retornar o próximo estágio do processo de autenticação.
- challengeName
-
Uma string que contém o nome do próximo desafio. Se você deseja apresentar um novo desafio ao seu usuário, especifique o nome do desafio aqui.
- issueTokens
-
Se você determinar que o usuário concluiu os desafios de autenticação de forma adequada; defina-o como
true
. Se o usuário não cumprir os desafios devidamente, defina comofalse
. - failAuthentication
-
Se quiser encerrar o processo de autenticação atual, defina-o como
true
. Para continuar o processo de autenticação atual, defina-o comofalse
.
Exemplo de definição do desafio de autenticação
Este exemplo definirá uma série de desafios de autenticação e emitirá tokens somente se o usuário concluir todos os desafios com êxito.