Desencadenador de Lambda para definir el desafío de autenticación - Amazon Cognito

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

Desencadenadores de Lambda de desafío
Creación de desafíos de autenticación

Amazon Cognito invoca este desencadenador después de Define Aut Challenge (Definir desafío de autenticación) si se ha especificado un desafío personalizado como parte del desencadenador Define Auth Challenge (Definir desafío de autenticación). Crea un flujo de autenticación personalizado.

Este desencadenador de Lambda se invoca para crear un desafío que se presenta al usuario. La solicitud de este desencadenador de Lambda incluye los parámetros challengeName y session. challengeName es una cadena y es el nombre del siguiente desafío al usuario. El valor de este atributo se establece en el desencadenador de Lambda para definir el desafío de autenticación.

El bucle de desafíos se repetirá hasta que todos los desafíos tengan respuesta.

Parámetros del desencadenador de Lambda para crear 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.

JSON
{ "request": { "userAttributes": { "string": "string", . . . }, "challengeName": "string", "session": [ ChallengeResult, . . . ], "clientMetadata": { "string": "string", . . . }, "userNotFound": boolean }, "response": { "publicChallengeParameters": { "string": "string", . . . }, "privateChallengeParameters": { "string": "string", . . . }, "challengeMetadata": "string" } }

Parámetros de la solicitud para crear desafíos de autenticación

userAttributes

Uno o varios pares de nombre y valor que representan atributos de usuario.

userNotFound

Este valor booleano se rellena cuando PreventUserExistenceErrors se establece como ENABLED en el cliente del grupo de usuarios.

challengeName

El nombre del nuevo desafío.

session

El elemento session consiste en una matriz de elementos de ChallengeResult que contienen, cada uno, los elementos siguientes:

challengeName

El tipo de desafío. Puede ser uno de los siguientes: "CUSTOM_CHALLENGE", "PASSWORD_VERIFIER", "SMS_MFA", "DEVICE_SRP_AUTH", "DEVICE_PASSWORD_VERIFIER" o "ADMIN_NO_SRP_AUTH".

challengeResult

Establezca este parámetro en true si el usuario ha respondido correctamente al desafío o en false, en caso contrario.

challengeMetadata

El nombre del desafío personalizado. Solo se usa si challengeName es "CUSTOM_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 para crear desafíos de autenticación. Puede transferir estos datos a la función de Lambda mediante el parámetro ClientMetadata de las acciones de la API AdminRespondToAuthChallenge y RespondToAuthChallenge. La solicitud que llama a la función de definición de desafíos de autenticación no incluye los datos transferidos en el parámetro ClientMetadata en las operaciones de la API AdminInitiateAuth y InitiateAuth.

Parámetros de la respuesta para crear desafíos de autenticación

publicChallengeParameters

Uno o varios pares de clave y valor para que la aplicación cliente los use en el desafío que se va a presentar al usuario. Este parámetro debe contener toda la información necesaria para que el desafío que se presente al usuario sea preciso.

privateChallengeParameters

Solo el desencadenador de Lambda para verificar la respuesta al desafío de autenticación utiliza este parámetro. Debe contener toda la información necesaria para validar la respuesta del usuario al desafío. Dicho de otro modo, el parámetro publicChallengeParameters contiene la pregunta que se formula al usuario y privateChallengeParameters contiene las respuestas válidas a la pregunta.

challengeMetadata

El nombre del desafío personalizado, si se trata de uno.

Ejemplo de creación de desafíos de autenticación

Se crea un CAPTCHA como desafío para el usuario. La URL de la imagen del CAPTCHA se añade a los parámetros de desafío públicos como "captchaUrl", mientras que la respuesta esperada se añade a los parámetros de desafío privados.

Node.js
const handler = async (event) => { if (event.request.challengeName !== "CUSTOM_CHALLENGE") { return event; } if (event.request.session.length === 2) { event.response.publicChallengeParameters = {}; event.response.privateChallengeParameters = {}; event.response.publicChallengeParameters.captchaUrl = "url/123.jpg"; event.response.privateChallengeParameters.answer = "5"; } if (event.request.session.length === 3) { event.response.publicChallengeParameters = {}; event.response.privateChallengeParameters = {}; event.response.publicChallengeParameters.securityQuestion = "Who is your favorite team mascot?"; event.response.privateChallengeParameters.answer = "Peccy"; } return event; }; export { handler }