Déclencheur Lambda avant authentification - Amazon Cognito

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Déclencheur Lambda avant authentification

Amazon Cognito appelle ce déclencheur quand un utilisateur tente de se connecter, ce qui vous permet d'effectuer une validation personnalisée qui réalise des actions préparatoires. Par exemple, vous pouvez refuser la demande d'authentification ou enregistrer les données de session au niveau d'un système externe.

Note

Ce déclencheur Lambda ne s'active pas lorsqu'un utilisateur n'existe pas ou qu'il possède déjà une session dans votre groupe d'utilisateurs. Si le paramètre PreventUserExistenceErrors d'un client d'application de groupe d'utilisateurs est défini sur ENABLED, le déclencheur Lambda s'active.

Présentation du flux d'authentification

Déclencheur Lambda Avant l'authentification – Flux client

La demande inclut les données de validation du client, provenant des valeurs ClientMetadata que votre application transmet aux opérations d'API InitiateAuth et AdminInitiateAuth du groupe d'utilisateurs.

Pour de plus amples informations, veuillez consulter Flux d'authentification de groupe d'utilisateurs.

Paramètres du déclencheur Lambda avant l'authentification

La demande qu'Amazon Cognito transmet à cette fonction Lambda est une combinaison des paramètres ci-dessous et des paramètres courants qu'Amazon Cognito ajoute à toutes les demandes.

JSON
{ "request": { "userAttributes": { "string": "string", . . . }, "validationData": { "string": "string", . . . }, "userNotFound": boolean }, "response": {} }

Paramètres de demande avant l'authentification

userAttributes

Une ou plusieurs paires nom-valeur représentant les attributs utilisateur.

userNotFound

Quand vous définissez PreventUserExistenceErrors sur ENABLED pour votre client de groupe d'utilisateurs, Amazon Cognito renseigne ce booléen.

validationData

Une ou plusieurs paires clé-valeur contenant les données de validation dans la demande de connexion de l'utilisateur. Pour transmettre ces données à votre fonction Lambda, utilisez le paramètre ClientMetadata dans les actions d'API InitiateAuth et AdminInitiateAuth.

Paramètres de réponse avant l'authentification

Amazon Cognito n'attend aucune information de retour supplémentaire dans la réponse. Votre fonction peut renvoyer une erreur pour rejeter la tentative de connexion ou utiliser des opérations d'API pour interroger et modifier vos ressources.

Exemple de stade avant l'authentification

Cet exemple de fonction empêche les utilisateurs de se connecter à votre groupe d'utilisateurs avec un client d'application spécifique. Puisque la fonction Lambda avant l'authentification n'appelle pas lorsque votre utilisateur possède une session existante, elle empêche uniquement les nouvelles sessions avec l'ID client de l'application que vous souhaitez bloquer.

Node.js
const handler = async (event) => { if ( event.callerContext.clientId === "user-pool-app-client-id-to-be-blocked" ) { throw new Error("Cannot authenticate users from this user pool app client"); } return event; }; export { handler };
Python
def lambda_handler(event, context): if event['callerContext']['clientId'] == "<user pool app client id to be blocked>": raise Exception("Cannot authenticate users from this user pool app client") # Return to Amazon Cognito return event

Amazon Cognito transmet les informations d'événement à votre fonction Lambda. Cette fonction renvoie alors le même objet d'événement à Amazon Cognito, avec d'éventuelles modifications dans la réponse. Dans la console Lambda, vous pouvez configurer un événement de test avec des données pertinentes pour votre déclencheur Lambda. Voici un événement de test pour cet exemple de code :

JSON
{ "callerContext": { "clientId": "<user pool app client id to be blocked>" }, "response": {} }