Comment transmettre les métadonnées des clients aux déclencheurs Lambda dans Amazon Cognito ?

Lecture de 3 minute(s)
0

Je souhaite créer un flux de travail d'authentification avec les API Amazon Cognito afin de transmettre les métadonnées du client aux déclencheurs AWS Lambda.

Résolution

Lorsque vous appelez l'API InitiateAuth avec le paramètre ClientMetadata pour initier l'authentification utilisateur dans Amazon Cognito, ClientMetadata est transmis uniquement aux déclencheurs Lambda suivants :

En comparaison, vous devez appeler l'API RespondToAuthChallenge pour inclure ClientMetadata dans ces déclencheurs Lambda :

Incluez le paramètre ClientMetadata dans l'appel d'API RespondToAuthChallenge pour répondre à l'un des défis d'authentification suivants :

  • Authentification multifactorielle (MFA) par mot de passe unique à durée limitée (TOTP)
  • Service de messages courts (SMS) pour la MFA
  • Mot de passe à distance sécurisé de l'appareil (SRP)
  • Défis liés à l'authentification personnalisée

En outre, le paramètre ClientMetadata améliore les flux de travail personnalisés pour les déclencheurs du groupe d'utilisateurs des fonctions Lambda.

Exemple d'appel d'API RespondToAuthChallenge avec le paramètre ClientMetadata

Dans cet exemple, un groupe d'utilisateurs Amazon Cognito est configuré avec un client d'application. Un déclencheur Lambda après authentification est associé au groupe d'utilisateurs.

La fonction Lambda nommée lambda_handler imprime l'événement qu'elle reçoit :

import json

def lambda_handler(event, context):
# TODO implement
print(event)
return event

**Important :**Utilisez la journalisation avec soin dans le système de production pour éviter de révéler des données sécurisées ou des secrets dans Amazon CloudWatch.

Un utilisateur de test est créé dans le groupe d'utilisateurs. Ensuite, le service de SMS pour la MFA est configuré.

L'exemple de demande d'appel à l'API InitiateAuth initie la connexion de l'utilisateur :

aws cognito-idp initiate-auth --auth-flow USER_PASSWORD_AUTH --auth-parameters USERNAME=test,PASSWORD=Password@123 --client-id 1abcd2efgh34ij5klmnopq456r

Exemple de réponse à un appel d'API InitiateAuth :

{
  "ChallengeName": "SMS_MFA",
  "Session": "1AbcDEfgXXXXX",
  "ChallengeParameters": {
    "CODE_DELIVERY_DELIVERY_MEDIUM": "SMS",
    "CODE_DELIVERY_DESTINATION": "+********1234",
    "USER_ID_FOR_SRP": "test"
  }
}

L'exemple de demande d'appel d'API RespondToAuthChallenge envoie le code de MFA et le paramètre ClientMetadata inclut toutes les informations supplémentaires à transmettre :

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'

Exemple de réponse à un appel d'API RespondToAuthChallenge :

{
  "ChallengeParameters": {},
  "AuthenticationResult": {
    "AccessToken": "abXXXX",
    "ExpiresIn": 3600,
    "TokenType": "Bearer",
    "RefreshToken": "abXX",
    "IdToken": "abXXX"
  }
}

Une fois qu'un utilisateur s'est authentifié et a reçu des jetons d'Amazon Cognito, le déclencheur Lambda de post-authentification est invoqué.

Vous trouverez les résultats du déclencheur Lambda après authentification dans le journal des événements de la console CloudWatch. Recherchez les détails du paramètre ClientMetadata dans le corps de l'événement.

Informations connexes

Déclenchement Lambda d'un défi d'authentification personnalisé

Personnalisation des flux de travail du groupe d'utilisateurs avec des déclencheurs Lambda

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an