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 define auth é uma função do 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.
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 define auth challenge emite um desafio
PASSWORD_VERIFIER
para um usuário que configurou a autenticação multifator, o Amazon Cognito prossegue com um desafioSMS_MFA
,EMAIL_OTP
ouSOFTWARE_TOKEN_MFA
. Essas são as instruções para um código de autenticação multifator. Em sua função, inclua o tratamento de eventos de entrada de desafiosSMS_MFA
,EMAIL_OTP
eSOFTWARE_TOKEN_MFA
. Você não precisa invocar os desafios de MFA usando sua função de desafio define auth.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 da RespondToAuthChallengeAPI. A solicitação que invoca a função define auth challenge não inclui dados passados no ClientMetadata parâmetro AdminInitiateAuthe InitiateAuthoperações de API.
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. Quando os usuários concluem a autenticação SRP com os PASSWORD_VERIFIER
desafios SRP_A
e, essa função passa a eles um CUSTOM_CHALLENGE
que invoca o gatilho do desafio create auth. Em combinação com nosso exemplo de desafio de criação de autenticação, essa sequência oferece um desafio CAPTCHA para o desafio três e uma pergunta de segurança para o desafio quatro.
Depois que o usuário resolve o CAPTCHA e responde à pergunta de segurança, essa função confirma que seu grupo de usuários pode emitir tokens. A autenticação SRP não é necessária; você também pode definir o CAPTCHA e a pergunta de segurança como desafios um e dois. No caso de sua função de definição de desafio de autenticação não declarar desafios de SRP, o sucesso de seus usuários é determinado inteiramente pelas respostas deles às suas solicitações personalizadas.