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

# Personnaliser Adaptive MFA

> Découvrez comment personnaliser l’authentification multifacteur adaptative (MFA).

Vous pouvez personnaliser <Tooltip tip="Authentification multifacteur adaptative : authentification multifacteur (MFA) qui n’est déclenchée pour les utilisateurs que lorsqu’une tentative de connexion est jugée peu fiable." cta="Voir le glossaire" href="/fr-CA/docs/glossary?term=Adaptive+MFA">Adaptive MFA</Tooltip> pour divers scénarios avec [Auth0 Actions](/fr-CA/docs/customize/actions).

<div id="when-to-customize-adaptive-mfa">
  ## Quand personnaliser Adaptive MFA
</div>

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Vous ne devriez envisager de personnaliser Adaptive MFA que si vos utilisateurs sont déjà inscrits à la MFA et doivent utiliser un courriel comme identifiant.
</Callout>

Si vos utilisateurs ne sont pas inscrits à la <Tooltip 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, comme un code envoyé par SMS." cta="Consulter le glossaire" href="/fr-CA/docs/glossary?term=MFA">MFA</Tooltip>, vous devriez utiliser la stratégie par défaut d’Adaptive MFA. Si un utilisateur n’est pas inscrit à la MFA et que votre Action évalue un risque élevé, vous disposez de peu d’options pour bloquer un <Tooltip tip="Acteurs malveillants : entité (une personne ou un groupe) qui représente une menace pour l’entreprise ou l’environnement avec l’intention de causer du tort." cta="Consulter le glossaire" href="/fr-CA/docs/glossary?term=bad+actor">acteur malveillant</Tooltip>.

Avant de commencer à personnaliser Adaptive MFA, posez-vous quelques questions :

* À quel niveau de confiance voulez-vous déclencher la MFA ?
* Comment voulez-vous mesurer le risque ?
* Voulez-vous qu’Auth0 mesure le niveau de confiance ou préférez-vous une mesure personnalisée ?
* Comment allez-vous gérer les utilisateurs qui ne sont pas inscrits à la MFA ?

<div id="confidence-scores">
  ## Scores de confiance
</div>

Adaptive MFA calcule un score de confiance global à partir de l’analyse de trois évaluations : `NewDevice`, `ImpossibleTravel` et `UntrustedIP`. Pour en savoir plus, consultez [Adaptive MFA : fonctionnement](/fr-CA/docs/secure/multi-factor-authentication/adaptive-mfa).

Chaque évaluation possède son propre score de confiance, et chaque score de confiance a une action associée :

| Score de confiance | Description                                                                                               | Action                                 |
| ------------------ | --------------------------------------------------------------------------------------------------------- | -------------------------------------- |
| `low`              | La tentative de connexion ne correspond pas aux habitudes observées précédemment chez l’utilisateur.      | Exiger la MFA.                         |
| `medium`           | La tentative de connexion correspond en partie aux habitudes observées précédemment chez l’utilisateur.   | Ne pas exiger la MFA.                  |
| `high`             | La tentative de connexion correspond étroitement aux habitudes observées précédemment chez l’utilisateur. | Ne pas exiger la MFA.                  |
| `neutral`          | S.O. Réservé à une utilisation future.                                                                    | S.O. Réservé à une utilisation future. |

<Accordion title="Afficher des exemples de scénarios à risque élevé et faible avec différents scores de confiance.">
  Le tableau suivant décrit les scénarios à risque élevé qui produisent un score de confiance `low` :

  | État de l’utilisateur | Niveau de friction souhaité à la connexion | Politique d’inscription souhaitée                                                             | Implémentation                                                             |
  | --------------------- | ------------------------------------------ | --------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
  | Inscrit à la MFA      | Ne pas exiger la MFA                       | S.O. (utilisateur déjà inscrit)                                                               | Utiliser une Action pour contourner la MFA                                 |
  | Non inscrit à la MFA  | Exiger la vérification du courriel         | Ne pas effectuer l’inscription (ne pas demander de facteur d’authentification supplémentaire) | Comportement par défaut (aucune Action liée à la MFA)                      |
  | Non inscrit à la MFA  | Exiger la vérification du courriel         | Exiger l’inscription à la MFA (demander un facteur d’authentification supplémentaire)         | Utiliser une Action pour forcer l’inscription à la MFA (modèle disponible) |

  Le tableau suivant décrit les scénarios à faible risque qui produisent un score de confiance `high` :

  | État de l’utilisateur | Niveau de friction souhaité à la connexion | Politique d’inscription souhaitée                                                             | Implémentation                                                             |
  | --------------------- | ------------------------------------------ | --------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
  | Inscrit à la MFA      | Aucune friction                            | S.O. (utilisateur déjà inscrit)                                                               | Comportement par défaut (aucune Action liée à la MFA)                      |
  | Non inscrit à la MFA  | Aucune friction                            | Ne pas effectuer l’inscription (ne pas demander de facteur d’authentification supplémentaire) | Comportement par défaut (aucune Action liée à la MFA)                      |
  | Non inscrit à la MFA  | Aucune friction                            | Exiger l’inscription à la MFA (demander un facteur d’authentification supplémentaire)         | Utiliser une Action pour forcer l’inscription à la MFA (modèle disponible) |
</Accordion>

Si vous souhaitez implémenter votre propre méthode pour évaluer le score de confiance global de différents scénarios, vous pouvez utiliser les données disponibles dans l’objet `riskAssessment`, qui contient le score de confiance global, les informations de version et les détails des évaluations individuelles.

Vous pouvez consulter la description complète, les propriétés et les valeurs de l’objet `riskAssessment` dans la [référence `riskAssessment` du déclencheur post-login des Actions](/fr-CA/docs/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/post-login-event-object#param-risk-assessment).

<div id="action-result-outcomes">
  ## Résultats possibles des Actions
</div>

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Les Actions qui déclenchent la MFA priment sur le comportement Adaptive MFA par défaut.
</Callout>

Si l’une de vos Actions déclenche la MFA en fonction du score de confiance, la stratégie Adaptive MFA par défaut déclenche la MFA lorsque le score de confiance est `low`.

Le tableau suivant présente les résultats possibles selon la combinaison des Actions et des actions de la stratégie Adaptive MFA par défaut.

| Résultat de l’Action | Action d’Adaptive MFA | Résultat           |
| -------------------- | --------------------- | ------------------ |
| Non autorisé         | Déclencher la MFA     | Non autorisé       |
| Non autorisé         | Aucune MFA requise    | Non autorisé       |
| Déclencher la MFA    | Déclencher la MFA     | Déclencher la MFA  |
| Déclencher la MFA    | Aucune MFA requise    | Déclencher la MFA  |
| Aucune MFA requise   | Déclencher la MFA     | Déclencher la MFA  |
| Aucune MFA requise   | Aucune MFA requise    | Aucune MFA requise |

<div id="action-templates">
  ## Modèles d’Action
</div>

Auth0 fournit deux modèles d’Action fondés sur Adaptive MFA que vous pouvez personnaliser : [Adaptive MFA](#adaptive-mfa-template) et [Exiger l’inscription à l’authentification multifacteur (MFA)](#require-mfa-enrollment-template).

<div id="adaptive-mfa-template">
  ### Modèle Adaptive MFA
</div>

Ce modèle fournit un exemple et un point de départ pour créer un flux métier personnalisé à l’aide d’évaluations individuelles des risques. Cet exemple utilise :

* Le déclencheur Action [`api.multifactor.enable`](/fr-CA/docs/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/post-login-api-object#api-multifactor) pour gérer à la fois l’inscription et le déclenchement des défis MFA configurés à la fin du processus de connexion.
* Le déclencheur Actions [`event.user.multifactor`](/fr-CA/docs/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/post-login-event-object) avec les facteurs auxquels l’utilisateur est inscrit.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Comme les notifications par `email` ne constituent pas un facteur indépendant, la condition `event.user.multifactor && event.user.multifactor.length > 0` renverra `false` si l’utilisateur n’a que le facteur `email`. Pour en savoir plus, consultez [Configurer les notifications par courriel pour MFA](/fr-CA/docs/secure/multi-factor-authentication/multi-factor-authentication-factors/configure-email-notifications-for-mfa).
</Callout>

```javascript lines expandable theme={null}
/**
* Gestionnaire qui sera appelé lors de l'exécution d'un flux PostLogin.
*
* @param {Event} event - Détails sur l'utilisateur et le contexte dans lequel il se connecte.
* @param {PostLoginAPI} api - Interface dont les méthodes peuvent être utilisées pour modifier le comportement de la connexion.
*/
exports.onExecutePostLogin = async (event, api) => {
    // Déterminer quels scores de confiance doivent déclencher la MFA; pour plus d'informations, consulter
    const promptConfidences = ['low', 'medium'];

    // Exemple de condition : demander la MFA uniquement en fonction du niveau de confiance
    // NewDevice; cela déclenchera la MFA lorsqu'un utilisateur se connecte
    // depuis un appareil inconnu.
    const confidence =
        event.authentication?.riskAssessment?.assessments?.NewDevice
            ?.confidence;
    const shouldPromptMfa =
        confidence && promptConfidences.includes(confidence);

    // Il est pertinent de demander la MFA uniquement lorsque l'utilisateur possède au moins un
    // facteur MFA inscrit.
    const canPromptMfa =
        event.user.multifactor && event.user.multifactor.length > 0;
    if (shouldPromptMfa && canPromptMfa) {
        api.multifactor.enable('any', { allowRememberBrowser: true });
    }
};
```

Pour afficher une invite aux utilisateurs, remplacez `api.multifactor.enable` par `api.authentication.challengeWithAny()` afin de forcer un défi MFA avec un facteur existant déjà configuré par l’utilisateur. Pour consulter les facteurs pris en charge avec Actions, reportez-vous au paramètre [`factors`](https://auth0.com/docs/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/post-login-api-object#api-authentication-challengewithany-factors). Par exemple :

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Cet exemple utilise `event.user.enrolledFactors` au lieu de `event.user.multifactor` pour vérifier l’inscription aux facteurs. Contrairement à `event.user.multifactor`, `event.user.enrolledFactors` inclut `email` comme facteur, ce qui permet de retourner correctement les facteurs configurés pour les utilisateurs qui n’ont configuré que le courriel.
</Callout>

```javascript theme={null}
// Cela n'a de sens d'inviter à la MFA que lorsque l'utilisateur a au moins un
// facteur MFA inscrit.
const canPromptMfa = event.user.enrolledFactors && event.user.enrolledFactors.length > 0;

if (shouldPromptMfa && canPromptMfa) {
    api.authentication.challengeWithAny([ {type: "email"}, {type:"phone"} ]);
}
```

<div id="require-mfa-enrollment-template">
  ### Modèle d’exigence d’inscription à la MFA
</div>

Ce modèle montre comment imposer l’inscription à la MFA lorsque vous utilisez une stratégie MFA standard ou Adaptive. Il utilise `event.user.multifactor` pour vérifier si l’utilisateur est inscrit à la MFA et, si ce n’est pas le cas, lui demander de s’inscrire.

```javascript lines theme={null}
/**
* Gestionnaire qui sera appelé lors de l'exécution d'un flux PostLogin.
*
* @param {Event} event - Détails sur l'utilisateur et le contexte dans lequel il se connecte.
* @param {PostLoginAPI} api - Interface dont les méthodes peuvent être utilisées pour modifier le comportement de la connexion.
*/
exports.onExecutePostLogin = async (event, api) => {
    if (!event.user.multifactor?.length) {
        api.multifactor.enable('any', { allowRememberBrowser: false });
    }
};
```

<div id="action-use-cases">
  ## Cas d’utilisation des Actions
</div>

Voici quelques suggestions sur la façon de créer des Actions personnalisées selon votre cas d’utilisation.

<AccordionGroup>
  <Accordion title="Exécuter une action si le score de confiance global est X">
    Évaluez la propriété `riskAssessment.confidence`, puis comparez-la aux constantes `high`, `medium` ou `low` :

    ```js lines theme={null}
    exports.onExecutePostLogin = async (event, api) => {
      const { riskAssessment } = event.authentication || {};
      const riskIsMedium = riskAssessment && riskAssessment.confidence === 'medium';

      if (riskIsMedium) {
        // ....
      }
    }
    ```
  </Accordion>

  <Accordion title="Exécuter une action si le score de confiance est supérieur ou inférieur à X">
    Les scores de confiance sont des valeurs discrètes, et non des valeurs dans une plage. Vous ne pouvez donc pas utiliser des opérateurs de comparaison (comme `<` ou `>`) pour évaluer plusieurs valeurs dans une seule condition.

    Utilisez plusieurs conditions pour combiner logiquement tous les scores de confiance que vous souhaitez traiter. Par exemple, si vous voulez savoir quand le score de confiance est supérieur à `low`, vérifiez s’il est égal à `medium` ou à `high` :

    ```js lines theme={null}
    exports.onExecutePostLogin = async (event, api) => {
      const { riskAssessment } = event.authentication || {};
      const riskIsMediumOrHigh = riskAssessment && 
                                      (riskAssessment.confidence === 'high' || 
                                       riskAssessment.confidence === 'medium');

      if (riskIsMediumOrHigh) {
        // ...
      }
    }
    ```
  </Accordion>

  <Accordion title="Obtenir des détails supplémentaires si le score de confiance global est X">
    L’objet `riskAssessment` est enregistré dans les journaux de votre locataire. Vous pouvez consulter les entrées de journal pour voir le score d’évaluation du risque et les facteurs déterminants (raisons).

    Vous pouvez consulter l’objet `riskAssessment` et transmettre les résultats à un autre système. Par exemple, vous pouvez envoyer un courriel ou enregistrer un enregistrement dans une base de données externe.

    ```js lines theme={null}
    exports.onExecutePostLogin = async (event, api) => {
      const { riskAssessment } = event.authentication || {};
      const riskIsLow = riskAssessment && riskAssessment.confidence === 'low';

      if (riskIsLow) {
        // log(externalDatabase, riskAssessment);
      }
    }
    ```
  </Accordion>

  <Accordion title="Exécuter une action si une évaluation précise a un résultat précis">
    Utilisez [l’objet `assessments`](/fr-CA/docs/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/post-login-event-object#param-assessments) pour accéder aux détails de chaque évaluation, y compris la propriété `code` :

    ```js lines theme={null}
    exports.onExecutePostLogin = async (event, api) => {
      const { riskAssessment } = event.authentication || {};
      const { ImpossibleTravel } = riskAssessment && riskAssessment.assessments;

      if (ImpossibleTravel.code === 'impossible_travel_from_last_login') {
        // ...
      }
    }
    ```
  </Accordion>

  <Accordion title="Agréger les évaluations pour obtenir un score de confiance global personnalisé.">
    Utilisez [l’objet `assessments`](/fr-CA/docs/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/post-login-event-object#param-assessments) pour accéder aux détails de chaque évaluation, puis utilisez la propriété `confidence`, la propriété `code` ou les deux.
  </Accordion>

  <Accordion title="Bloquer la transaction actuelle et renvoyer une erreur et un message si une évaluation précise a un résultat précis">
    Utilisez [l’objet `assessments`](/fr-CA/docs/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/post-login-event-object#param-assessments) pour accéder aux détails de chaque évaluation, y compris la propriété `code`.

    Empêchez la transaction de connexion de se terminer en renvoyant la fonction `callback` avec un objet `UnauthorizedError` comme paramètre d’erreur. L’objet `UnauthorizedError` définit toujours `error` sur `unauthorized`, mais vous pouvez personnaliser `error_message` :

    ```js lines theme={null}
    exports.onExecutePostLogin = async (event, api) => {
      const { riskAssessment } = event.authentication || {};
      const { ImpossibleTravel } = riskAssessment && riskAssessment.assessments;

      if (ImpossibleTravel.code === 'impossible_travel_from_last_login') {
        return api.access.deny('Connexion bloquée en raison d’un voyage impossible détecté.')
      }
    }
    ```

    L’utilisateur est alors redirigé vers l’URL de rappel de l’application avec les paramètres `error` et `error_message`.
  </Accordion>

  <Accordion title="Gérer de façon sécuritaire les cas où Auth0 n'arrive pas à exécuter les évaluations">
    Auth0 attribue automatiquement un score de confiance `low` si une défaillance survient pendant l’évaluation du risque.

    Pour atténuer ce scénario, utilisez [l’objet `assessments`](/fr-CA/docs/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/post-login-event-object#param-assessments) pour vérifier la propriété `code` de chaque évaluation et déterminer si la valeur est définie sur `assessment_not_available`.
  </Accordion>
</AccordionGroup>

<div id="learn-more">
  ## En savoir plus
</div>

* [Activer Adaptive MFA](/fr-CA/docs/secure/multi-factor-authentication/adaptive-mfa/enable-adaptive-mfa)
* [Événements de journalisation de Adaptive MFA](/fr-CA/docs/secure/multi-factor-authentication/adaptive-mfa/adaptive-mfa-log-events)
* [Déclencheurs d’Actions : post-login - objet API](/fr-CA/docs/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/post-login-api-object)
* [Déclencheurs d’Actions : post-login - objet d’événement](/fr-CA/docs/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/post-login-event-object)
