> ## Documentation Index
> Fetch the complete documentation index at: https://auth0.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Déclencheur de connexion

> Découvrez le flux de connexion des Actions et le déclencheur d’Action post-connexion, qui est exécuté après qu’un utilisateur se connecte et lorsqu’un jeton d’actualisation est demandé.

Le déclencheur de connexion s’exécute lorsqu’un utilisateur s’authentifie avec succès auprès d’une application sur un locataire Auth0. Cela inclut également l’authentification post-inscription.

<Frame>
  <img src="https://mintlify.s3.us-west-1.amazonaws.com/auth0/docs/images/fr-ca/cdy7uua7fh8z/2SkfIOm4fFOJ8N0GNJwam8/77230cdb4411b2383751b037fb56fe29/2024-09-30_10-01-42.png" alt="Diagram showing the Actions Login Flow." />
</Frame>

Les Actions de ce déclencheur sont bloquantes (synchrones), ce qui signifie qu’elles s’exécutent dans le cadre du processus d’un déclencheur et empêchent le reste du pipeline Auth0 de s’exécuter jusqu’à ce que l’Action soit terminée.

## Déclencheurs

### Connexion / Post-connexion

Le déclencheur `post-login` est une fonction exécutée après la connexion d’un utilisateur et lorsqu’un jeton d’actualisation est demandé.

#### Références

* [Objet événement](/docs/fr-ca/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/post-login-event-object) : fournit des informations contextuelles sur un seul utilisateur se connectant via Auth0.
* [Objet API](/docs/fr-ca/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/post-login-api-object) : fournit des méthodes permettant de modifier le comportement du flux.

## Cas d’utilisation courants

### Contrôle d’accès

Une Action post-connexion peut être utilisée pour fournir une logique personnalisée utilisée pour refuser l’accès à un utilisateur qui tente d’accéder à une application :

```javascript lines theme={null}
/**
 * @param {Event} event - Details about the user and the context in which they are logging in.
 * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.
 */
exports.onExecutePostLogin = async (event, api) => {
  if (event.user.email && event.user.email.endsWith("@example.com") && event.client.name === "My SPA") {
    api.access.deny(`Access to ${event.client.name} is not allowed.`);
  }
};
```

### Autoriser l’accès uniquement les jours ouvrables pour une application spécifique

si vous avez une application et que vous souhaitez vous assurer qu’elle ne soit accessible qu’en semaine, vous pouvez créer l’Action suivante :

```javascript lines theme={null}
/**
 * @param {Event} event - Details about the user and the context in which they are logging in.
 * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.
 */
 exports.onExecutePostLogin = async (event, api) => {
  if (event.client.name === "APP_NAME") {
    const d = new Date().getDay();

    if (d === 0 || d === 6) {
      api.access.deny("This app is only available during the week.");
    }
  }
}
```

### Interdire l’accès à toute personne appelant une API

Supposons que vous souhaitiez refuser l’accès à tous les utilisateurs qui appellent une API. Cela signifie que vous devez refuser l’accès en fonction de la valeur <Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" tip="">audience</Tooltip> de votre API, que vous pouvez trouver dans le champ **API de public** de votre API dans [Dashboard > Applications > API](https://manage.auth0.com/#/apis). Pour cela, vous devez créer l’Action suivante :

```javascript lines theme={null}
/**
 * @param {Event} event - Details about the user and the context in which they are logging in.
 * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.
 */
 exports.onExecutePostLogin = async (event, api) => {
  // In Actions, an API will be referred to as a Resource Server.
  if (event.resource_server && event.resource_server.identifier === "http://todoapi2.api") {
    api.access.deny("end_users_not_allowed");
  }
}
```

### Ajouter des rôles d’utilisateur aux jetons d’ID et d’accès

Pour ajouter des rôles d’utilisateur aux jetons émis par Auth0, utilisez l’objet `event.authorization` avec les méthodes `api.idToken.setCustomClaim` et `api.accessToken.setCustomClaim` :

```javascript lines theme={null}
/**
 * @param {Event} event - Details about the user and the context in which they are logging in.
 * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.
 */
exports.onExecutePostLogin = async (event, api) => {
  const namespace = 'https://my-app.example.com';
  if (event.authorization) {
    api.idToken.setCustomClaim(`${namespace}/roles`, event.authorization.roles);
    api.accessToken.setCustomClaim(`${namespace}/roles`, event.authorization.roles);
  }
}
```

* Une demande personnalisée ne peut pas inclure certains termes, et nous vous recommandons fortement d’utiliser une demande d’espace de nommage qui prend la forme d’un URI. Consultez [notre documentation sur les demandes personnalisées](/docs/fr-ca/secure/tokens/json-web-tokens/create-custom-claims) pour plus d’informations.
* Le <Tooltip href="/docs/fr-ca/glossary?term=json-web-token" tip="Jeton Web JSON (JWT)
  Format standard de jeton d’ID (et souvent de jeton d’accès) utilisé pour représenter en toute sécurité des demandes entre deux parties." cta="Voir le glossaire">JWT</Tooltip> renvoyé à l’application demandeuse est construit et signé à la fin du traitement du déclencheur. Le JWT final signé n’est pas accessible dans une action.

### Enrichir le profil utilisateur

Auth0 fournit un système complet de stockage des métadonnées dans un [Profil utilisateur](/docs/fr-ca/manage-users/user-accounts/user-profiles/normalized-user-profiles). Afin de définir `user_metadata` ou `app_metadata` sur le profil d’un utilisateur lors de sa connexion, utilisez les fonctions`api.user.setUserMetadata` ou `api.user.setAppMetadata`.

```javascript lines theme={null}
/**
 * @param {Event} event - Details about the user and the context in which they are logging in.
 * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.
 */
exports.onExecutePostLogin = async (event, api) => {
  api.user.setUserMetadata("favorite_color", "blue");
};
```

Une fois toutes les actions post-connexion exécutées, Actions mettra à jour le profil utilisateur en une seule opération. Cette opération est soumise à une [limite anti-attaques](/docs/fr-ca/troubleshoot/customer-support/operational-policies/rate-limit-policy/management-api-endpoint-rate-limits) « Write Users » (Écriture des utilisateurs).

### Appliquer la politique d’authentification multifacteur (MFA) personnalisée

Une Action post-connexion peut être utilisée pour exiger dynamiquement l’authentification multifacteur (<Tooltip href="/docs/fr-ca/glossary?term=multifactor-authentication" tip="Authentification multifacteur (MFA)
Processus d’authentification de l’utilisateur qui utilise un facteur en plus du nom d’utilisateur et du mot de passe, tel qu’un code par SMS." cta="Voir le glossaire">MFA</Tooltip>) pour un utilisateur en fonction des besoins de votre application.

```javascript lines theme={null}
/**
 * @param {Event} event - Details about the user and the context in which they are logging in.
 * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.
 */
exports.onExecutePostLogin = async (event, api) => {
  // Require MFA for anyone logging in from North America.
  if (event.request.geoip.continentCode === "NA") {
    api.multifactor.enable("any");
  };
};
```

Un fournisseur de MFA doit être configuré pour activer la MFA lors d’une connexion. Pour en savoir plus, veuillez consulter [Authentification multifacteur (MFA)](/docs/fr-ca/secure/multi-factor-authentication).

### Réduisez les frictions grâce aux clés d’identification

Une Action post-connexion peut être utilisée pour réduire les frictions en ignorant dynamiquement l’authentification multifacteur pour un utilisateur qui s’est authentifié avec une clé d’identification.

```javascript lines theme={null}
/**
* Handler that will be called during the execution of a PostLogin flow.
*
* @param {Event} event - Details about the user and the context in which they are logging in.
* @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.
*/
exports.onExecutePostLogin = async (event, api) => {
 // Check if a passkey was used to authenticate
 const skipMFA = event.authentication?.methods.some(
   (method) => method.name === "passkey"
 );

 // If a passkey was used skip MFA
 if (skipMFA) {
   api.multifactor.enable("none");
 }
};
```

La connexion doit avoir les clés d’identification et l’authentification multifacteur (MFA) activées. Pour en savoir plus, veuillez consulter [Clés d’accès](/docs/fr-ca/authenticate/database-connections/passkeys) et [Authentification multifacteur (MFA)](/docs/fr-ca/secure/multi-factor-authentication).

### Rediriger l’utilisateur vers un site externe

De façon similaire à [Règles de redirection](/docs/fr-ca/customize/rules/redirect-users), une Action post-connexion peut être utilisée pour envoyer l’utilisateur vers un site externe. Une fois terminée, l’utilisateur peut être redirigé vers Auth0 pour continuer son flux de connexion. Dans l’exemple ci-dessous, une Action de redirection est utilisée pour inviter l’utilisateur à fournir sa couleur préférée.

```javascript lines theme={null}
/**
 * @param {Event} event - Details about the user and the context in which they are logging in.
 * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.
 */
exports.onExecutePostLogin = async (event, api) => {
  // Skip the redirect if the user has already chosen a favorite color.
  if (event.user.user_metadata.favorite_color) {
    return;
  }

  const token = api.redirect.encodeToken({
    secret: event.secrets.MY_SHARED_SECRET,
    payload: {
      email: event.user.email,
    },
  });

  // Send the user to https://my-app.example.com along
  // with a `session_token` query string param.
  api.redirect.sendUserTo("https://my-app.example.com", { 
    query: { session_token: token }
  });
};

/**
 * @param {Event} event - Details about the user and the context in which they are logging in.
 * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.
 */
exports.onContinuePostLogin = async (event, api) => {
  // Once the /continue endpoint has been called, unpack the signed token
  // and store the favorite color as user metadata.

  const payload = api.redirect.validateToken({
    secret: event.secrets.MY_SHARED_SECRET,
  });

  api.user.setUserMetadata("favorite_color", payload.favorite_color);
};
```

Le pipeline Actions sera suspendu pendant que l’utilisateur est redirigé. Une fois que l’utilisateur poursuit son processus de connexion Auth0, le pipeline Actions reprendra là où il a été suspendu. Les Actions qui ont été exécutées avant la redirection ne sont pas exécutées à nouveau.

Pour en savoir plus à propos des Actions de redirection, veuillez consulter [Rediriger avec des actions](/docs/fr-ca/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/redirect-with-actions).

### Modifier les permissions d’un jeton d’accès

Lorsque vous modifiez les permissions associées à un jeton d’accès, assurez-vous de respecter les meilleures pratiques entourant la spécification d'audience.

* Vérifiez toujours l'audience attendue avant d’ajouter des permissions.
* Empêchez l’utilisation d’entrées non fiables lors de l’ajout de permissions.

```javascript lines theme={null}
/**
 * @param {Event} event - Details about the user and the context in which they are logging in.
 * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.
 */
exports.onExecutePostLogin = async (event, api) => {
  if (event?.resource_server?.identifier === 'https://example.com/api') {
    api.accessToken.addScope("read:xyz");
  }
};
```

## En savoir plus

* [Gérer les métadonnées des utilisateurs avec le déclencheur d’action après l’ouverture de session](/docs/fr-ca/manage-users/user-accounts/metadata/manage-user-metadata)
* [Rediriger avec des actions](/docs/fr-ca/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/redirect-with-actions)
* [Comprendre le fonctionnement des métadonnées dans les profils utilisateurs](/docs/fr-ca/manage-users/user-accounts/metadata)
