¿Cómo puedo pasar ClientMetadata a los desencadenadores de Lambda en Amazon Cognito?
Quiero crear un flujo de trabajo de autenticación con las API de Amazon Cognito para transferir los metadatos del cliente a los desencadenadores de AWS Lambda.
Solución
Al llamar a la APIInitiateAuth con el parámetroClientMetadata para iniciar la autenticación de usuarios en Amazon Cognito, ClientMetadata se pasa únicamente a estos desencadenadores de Lambda:
En comparación, debe llamar a la API RespondToAuthChallenge para incluir ClientMetadata en estos desencadenadores de Lambda:
- Autenticación posterior
- Generación previa al token
- Defina el desafío de autenticación
- Cree un desafío de autenticación
- Verifique el desafío de autenticación
Incluya el parámetro ClientMetadata en la llamada a la API RespondToAuthChallenge para responder a cualquiera de estos desafíos de autenticación:
- Autenticación multifactorial (MFA) con contraseña de un solo uso (TOTP) basada en el tiempo
- Servicio de mensajes cortos (SMS) para MFA
- Contraseña remota segura del dispositivo (SRP)
- Desafíos de autenticación personalizada
Además, el parámetro ClientMetadata mejora los flujos de trabajo personalizados para los desencadenadores del grupo de usuarios de la función Lambda.
Ejemplo de llamada a la API RespondToAuthChallenge con el parámetro ClientMetadata
En este ejemplo, se configura un grupo de usuarios de Amazon Cognito con un cliente de aplicación. Un grupo de usuarios de Lambda posterior a la autenticación está asociado al grupo de usuarios.
La función Lambda denominada lambda\ _handler imprime el evento que recibe:
import json def lambda_handler(event, context): # TODO implement print(event) return event
**Importante:**Utilice el registro con cuidado en el sistema de producción para evitar exponer datos o secretos seguros en Amazon CloudWatch.
Se crea un usuario de prueba en el grupo de usuarios. A continuación, se configura el SMS para MFA.
El ejemplo de solicitud de llamada a la API InitiateAuth inicia el inicio de sesión del usuario:
aws cognito-idp initiate-auth --auth-flow USER_PASSWORD_AUTH --auth-parameters USERNAME=test,PASSWORD=Password@123 --client-id 1abcd2efgh34ij5klmnopq456r
Ejemplo de respuesta de llamada a la API InitiateAuth:
{ "ChallengeName": "SMS_MFA", "Session": "1AbcDEfgXXXXX", "ChallengeParameters": { "CODE_DELIVERY_DELIVERY_MEDIUM": "SMS", "CODE_DELIVERY_DESTINATION": "+********1234", "USER_ID_FOR_SRP": "test" } }
En el ejemplo de solicitud de llamada a la API RespondToAuthChallenge, se envía el código MFA y el parámetro ClientMetadata incluye la información adicional que se debe transmitir:
aws cognito-idp respond-to-auth-challenge --client-id 9zyxw8vuts76rq5ponmlkj432i --challenge-name SMS_MFA --session "9ZyxWVutXXXXX" --challenge-responses USERNAME=test,SMS_MFA_CODE=654321 --client-metadata KeyName1='string',KeyName2='string'
Ejemplo de respuesta de llamada a la API RespondToAuthChallenge:
{ "ChallengeParameters": {}, "AuthenticationResult": { "AccessToken": "abXXXX", "ExpiresIn": 3600, "TokenType": "Bearer", "RefreshToken": "abXX", "IdToken": "abXXX" } }
Cuando un usuario se autentica correctamente y recibe los tokens de Amazon Cognito, se invoca el desencadenador de Lambda posterior a la autenticación.
Busque los resultados del desencadenador de Lambda posterior a la autenticación en Registrar eventos en la consola de CloudWatch. Busque los detalles del parámetro ClientMetadata en el cuerpo del evento.
Información relacionada
Desafíos de autenticación personalizados: los desencadenadores de Lambda
Personalización de los flujos de trabajo de grupos de usuarios con desencadenadores de Lambda
Contenido relevante
- OFICIAL DE AWSActualizada hace 25 días
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace 2 años