

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
<a name="user-pool-lambda-pre-authentication"></a>

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, sauf si le `PreventUserExistenceErrors` paramètre d'un client d'application de groupe d'utilisateurs est défini sur. `ENABLED` Le renouvellement d'une session d'authentification existante n'active pas non plus ce déclencheur.

**Topics**
+ [Vue d'ensemble du flux](#user-pool-lambda-pre-authentication-1)
+ [Paramètres du déclencheur Lambda avant l'authentification](#cognito-user-pools-lambda-trigger-syntax-pre-auth)
+ [Exemple de stade avant l'authentification](#aws-lambda-triggers-pre-authentication-example)

## Vue d'ensemble du flux
<a name="user-pool-lambda-pre-authentication-1"></a>

![\[Déclencheur Lambda Avant l'authentification – Flux client\]](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/lambda-pre-authentication-1.png)


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 [Exemple de session d'authentification](authentication.md#amazon-cognito-user-pools-authentication-flow).

## Paramètres du déclencheur Lambda avant l'authentification
<a name="cognito-user-pools-lambda-trigger-syntax-pre-auth"></a>

La demande qu’Amazon Cognito transmet à cette fonction Lambda est une combinaison des paramètres ci-dessous et des [paramètres courants](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-working-with-lambda-triggers.html#cognito-user-pools-lambda-trigger-syntax-shared) 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
<a name="cognito-user-pools-lambda-trigger-syntax-pre-auth-request"></a>

**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 ClientMetadata paramètre dans les actions [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)et [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)API.

### Paramètres de réponse avant l'authentification
<a name="cognito-user-pools-lambda-trigger-syntax-pre-auth-response"></a>

Amazon Cognito ne traite aucune information ajoutée renvoyée par votre fonction 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
<a name="aws-lambda-triggers-pre-authentication-example"></a>

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": {}
}
```

------