Desencadenador de Lambda para verificar la respuesta al desafío de autenticación - Amazon Cognito

Desencadenador de Lambda para verificar la respuesta al desafío de autenticación


            Desencadenadores de Lambda de desafío
Verificación de la respuesta a los desafíos de autenticación

Amazon Cognito lama a este desencadenador para verificar si la respuesta del usuario a un desafío de autenticación personalizado es o no válida. Forma parte del flujo de autenticación personalizado de un grupo de usuarios.

La solicitud de este disparador contiene los parámetros privateChallengeParameters y challengeAnswer. El desencadenador de Lambda para definir el desafío de autenticación devuelve los valores de privateChallengeParameters, que contienen la respuesta esperada del usuario. El parámetro challengeAnswer contiene la respuesta del usuario al desafío.

La respuesta contiene el atributo answerCorrect. Si el usuario finaliza correctamente el desafío, Amazon Cognito establece el valor del atributo en true. Si el usuario no finaliza correctamente el desafío, Amazon Cognito establece el valor del atributo en false.

El bucle de desafíos se repite hasta que los usuarios respondan a todos los desafíos.

Parámetros del desencadenador de Lambda para verificar el desafío de autenticación

Estos son los parámetros que Amazon Cognito transfiere a esta función de Lambda junto con la información del evento en los parámetros comunes.

JSON
{ "request": { "userAttributes": { "string": "string", . . . }, "privateChallengeParameters": { "string": "string", . . . }, "challengeAnswer": "string", "clientMetadata": { "string": "string", . . . }, "userNotFound": boolean }, "response": { "answerCorrect": boolean } }

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

userAttributes

Este parámetro contiene uno o varios pares de nombre-valor que representan atributos de usuario.

userNotFound

Cuando Amazon Cognito establece PreventUserExistenceErrors en ENABLED para su cliente de grupo de usuarios, Amazon Cognito rellena este booleano.

privateChallengeParameters

Este parámetro proviene del desencadenador para definir el desafío de autenticación. Para determinar si el usuario ha superado un desafío, Amazon Cognito compara los parámetros con la challengeAnswer de un usuario.

Este parámetro contiene toda la información necesaria para validar la respuesta del usuario al desafío. Esta información incluye la pregunta que Amazon Cognito presenta al usuario (publicChallengeParameters) y las respuestas válidas a la pregunta (privateChallengeParameters). Solo el desencadenador de Lambda de verificación de la respuesta al desafío de autenticación utiliza este parámetro.

challengeAnswer

Este valor de parámetro es la respuesta del usuario al desafío.

clientMetadata

Este parámetro contiene uno o varios pares de clave-valor que puede proporcionar como datos de entrada personalizados a la función de Lambda para verificar el desencadenador del desafío de autenticación. Puede transferir estos datos a la función de Lambda mediante el parámetro ClientMetadata en las operaciones de la API AdminRespondToAuthChallenge y RespondToAuthChallenge. Amazon Cognito no incluye los datos transferidos del parámetro ClientMetadata en las operaciones de la API AdminInitiateAuth y InitiateAuth en la solicitud que transfiere a la función de verificación de la autenticación.

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

answerCorrect

Si el usuario finaliza correctamente el desafío, Amazon Cognito establece este parámetro en true. Si el usuario no finaliza correctamente el desafío, Amazon Cognito establece el parámetro en false.

Ejemplo de verificación de la respuesta a los desafíos de autenticación

En este ejemplo, la función de Lambda comprueba si la respuesta del usuario a un desafío coincide con la respuesta esperada. Amazon Cognito establece el parámetro answerCorrect en true si la respuesta del usuario coincide con la respuesta esperada.

Node.js
exports.handler = (event, context, callback) => { if (event.request.privateChallengeParameters.answer == event.request.challengeAnswer) { event.response.answerCorrect = true; } else { event.response.answerCorrect = false; } // Return to Amazon Cognito callback(null, event); }