Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Desencadenador de Lambda para definir el desafío de autenticación
El activador Define Auth Challenge es una función Lambda que mantiene la secuencia de desafíos en un flujo de autenticación personalizado. Declara el éxito o el fracaso de la secuencia de desafío y establece el siguiente desafío si la secuencia aún no se ha completado.
- Definición de desafíos de autenticación
-
Amazon Cognito invoca este desencadenador para iniciar el flujo de autenticación personalizado.
La solicitud de este desencadenador de Lambda contiene session
. El parámetro session
es una matriz que cuenta con todos los desafíos que se presentan al usuario durante el proceso de autenticación actual. La solicitud también incluye el resultado correspondiente. La matriz session
almacena los detalles del desafío (ChallengeResult
) en orden cronológico. El desafío session[0]
representa el primer desafío que recibe el usuario.
Puede hacer que Amazon Cognito verifique las contraseñas de los usuarios antes de que emita los desafíos personalizados. Todos los activadores Lambda asociados a la categoría de autenticación de las cuotas de tasa de solicitudes se ejecutarán al realizar la SRP autenticación en un flujo de desafío personalizado. Le presentamos la información general sobre el proceso:
-
La aplicación inicia sesión llamando a
InitiateAuth
oAdminInitiateAuth
con el mapaAuthParameters
. Los parámetros deben incluirCHALLENGE_NAME: SRP_A,
y valores paraSRP_A
yUSERNAME
. -
Amazon Cognito invoca su desencadenador de Lambda definición de desafío de autenticación con una sesión inicial que contiene
challengeName: SRP_A
ychallengeResult: true
. -
Después de recibir estos datos de entrada, la función de Lambda responde con
challengeName: PASSWORD_VERIFIER
,issueTokens: false
,failAuthentication: false
. -
Si la verificación de la contraseña se realiza de manera correcta, Amazon Cognito llama a la función de Lambda con una nueva sesión que contiene
challengeName: PASSWORD_VERIFIER
ychallengeResult: true
. -
Para iniciar los desafíos personalizados, la función de Lambda responde con
challengeName: CUSTOM_CHALLENGE
,issueTokens: false
yfailAuthentication: false
. Si no desea comenzar el flujo de autenticación personalizado con la verificación de la contraseña, puede iniciar sesión con el mapaAuthParameters
, que incluyeCHALLENGE_NAME: CUSTOM_CHALLENGE
. -
El bucle de desafíos se repite hasta que todos los desafíos tengan respuesta.
El siguiente es un ejemplo de una InitiateAuth
solicitud inicial que precede a la autenticación personalizada con un flujo. SRP
{ "AuthFlow": "CUSTOM_AUTH", "ClientId": "1example23456789", "AuthParameters": { "CHALLENGE_NAME": "SRP_A", "USERNAME": "testuser", "SRP_A": "[SRP_A]", "SECRET_HASH": "[secret hash]" } }
Temas
Parámetros del desencadenador de Lambda para definir el desafío de autenticación
La solicitud que Amazon Cognito envía a esta función de Lambda es una combinación de los parámetros que se indican a continuación y los parámetros comunes que Amazon Cognito agrega a todas las solicitudes.
Parámetros de la solicitud para definir desafíos de autenticación
Al llamar a la función Lambda, Amazon Cognito proporciona los siguientes parámetros:
- userAttributes
-
Uno o varios pares de nombre-valor que representan atributos de usuario.
- userNotFound
-
Valor booleano que rellena Amazon Cognito cuando
PreventUserExistenceErrors
se establece comoENABLED
en el cliente del grupo de usuarios. Un valor detrue
significa que el ID de usuario (nombre de usuario, dirección de correo electrónico, etc.) no coincide con ningún usuario existente. CuandoPreventUserExistenceErrors
se establece enENABLED
, el servicio no informa a la aplicación de la inexistencia de usuarios. Recomendamos que las funciones de Lambda mantengan la misma experiencia del usuario y tengan en cuenta la latencia. De esta forma, la persona que realiza la llamada no podrá detectar un comportamiento diferente si el usuario existe o no existe. - session
-
Matriz de
ChallengeResult
elementos. Cada matriz contiene los siguientes elementos:- challengeName
-
Uno de los siguientes tipos de desafío:
CUSTOM_CHALLENGE
SRP_A
,PASSWORD_VERIFIER
,SMS_MFA
,EMAIL_OTP
,SOFTWARE_TOKEN_MFA
,DEVICE_SRP_AUTH
DEVICE_PASSWORD_VERIFIER
, oADMIN_NO_SRP_AUTH
.Cuando su función de definición de desafío de autenticación genera un
PASSWORD_VERIFIER
desafío para un usuario que ha configurado la autenticación multifactor, Amazon Cognito continúa conSMS_MFA
un desafíoEMAIL_OTP
, o.SOFTWARE_TOKEN_MFA
Estas son las instrucciones para obtener un código de autenticación multifactorial. En su función, incluya el manejo de los eventos de entrada procedentes deSMS_MFA
EMAIL_OTP
, ySOFTWARE_TOKEN_MFA
los desafíos. No es necesario invocar ningún desafío en la MFA función de desafío de autenticación definida.importante
Cuando la función determine si un usuario se ha autenticado de forma satisfactoria y deba emitirle tokens, compruebe siempre
challengeName
en la función de desafío de autenticación de definición y si coincide el valor esperado. - challengeResult
-
Establezca este parámetro en
true
si el usuario ha respondido correctamente al desafío o enfalse
, en caso contrario. - challengeMetadata
-
El nombre del desafío personalizado. Solo se usa si
challengeName
esCUSTOM_CHALLENGE
.
- clientMetadata
-
Uno o varios pares de clave-valor que puede proporcionar como datos de entrada personalizados a la función de Lambda que especifica destinada al desencadenador de Lambda para definir el desafío de autenticación. Para pasar estos datos a la función Lambda, puede usar el
ClientMetadata
parámetro en las operaciones AdminRespondToAuthChallengey RespondToAuthChallengeAPI. La solicitud que invoca la función de desafío de autenticación definida no incluye los datos transferidos en el ClientMetadata parámetro en AdminInitiateAuthlas operaciones y. InitiateAuthAPI
Parámetros de la respuesta a la definición de desafíos de autenticación
En la respuesta puede devolver la etapa siguiente del proceso de autenticación.
- challengeName
-
Cadena que contiene el nombre del siguiente desafío. Si quiere plantear un nuevo desafío al usuario, especifique aquí el nombre de dicho desafío.
- issueTokens
-
Establezca este parámetro en
true
si cree que el usuario se ha autenticado suficientemente respondiendo a los desafíos. Si el usuario no ha respondido suficientemente a los desafíos, establézcalo enfalse
. - failAuthentication
-
Establezca este parámetro en
true
si desea finalizar el proceso de autenticación en curso. Para continuar el proceso de autenticación actual, establézcalo enfalse
.
Ejemplo de definición de desafíos de autenticación
En este ejemplo se definen una serie de desafíos de autenticación y se emiten tokens solo si el usuario ha completado correctamente todos los desafíos.