> ## 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.

# Authentification Passwordless sur les connexions de base de données

> Découvrez comment configurer une véritable authentification Passwordless sur une connexion de base de données, nouvelle ou existante.

export const ReleaseStageNotice = ({feature, stage, plans, contact, terms}) => {
  const stageTextMap = {
    "beta": "Bêta",
    "ea": "Accès anticipé"
  };
  const stageText = stageTextMap[stage] || "une étape du cycle de publication";
  const prsLink = "/docs/troubleshoot/product-lifecycle/product-release-stages";
  const linkify = (text, url) => {
    return <a href={url} target="_blank" rel="noreferrer" class="link">{text}</a>;
  };
  const includeDetails = (plans, contact, terms) => {
    const hasDetails = terms || plans || contact;
    if (!hasDetails) return null;
    return <span data-as="p">
            {plans && <>Cette fonctionnalité est offerte avec les {linkify(`${plans} forfaits`, "https://auth0.com/pricing")}. </>}
            {contact && "Pour y participer, communiquez avec " + contact + ". "}
            {terms && <>En utilisant cette fonctionnalité, vous acceptez les conditions applicables de l’essai gratuit énoncées dans le {linkify("Master Subscription Agreement", "https://www.okta.com/legal")} d’Okta.</>}
        </span>;
  };
  return <Warning>
            <span data-as="p">
                <strong>La fonctionnalité {feature} est en {linkify(stageText, prsLink)}.</strong>
            </span>

            {includeDetails(plans, contact, terms)}
        </Warning>;
};

<ReleaseStageNotice feature="Authentification Passwordless sur les connexions de base de données" stage="ea" contact="support" terms="true" />

Auth0 vous permet de configurer l’authentification Passwordless par courriel et par téléphone directement sur une [connexion de base de données](/fr-CA/docs/authenticate/database-connections). Au lieu de créer une connexion distincte pour l’authentification par code à usage unique (OTP), vous pouvez offrir l’authentification Passwordless directement à partir de votre connexion de base de données. Cela réduit la complexité de l’implémentation et simplifie l’expérience de connexion pour les utilisateurs finaux.

<Callout icon="triangle-exclamation" color="#F59E0B" iconType="regular">
  L’authentification Passwordless pour les connexions de base de données n’est pas prise en charge avec Classic Login.
</Callout>

<div id="how-it-works">
  ## Fonctionnement
</div>

Auth0 utilise une approche d’[authentification Identifier-First](/fr-CA/docs/authenticate/login/auth0-universal-login/identifier-first) dans laquelle les utilisateurs sont vérifiés au moyen de l’authentification OTP :

1. Un utilisateur final saisit un identifiant pour se connecter avec le [Universal Login d’Auth0](/fr-CA/docs/authenticate/login/auth0-universal-login).
2. Auth0 recherche les méthodes d’authentification associées à chaque identifiant configuré dans votre connexion de base de données.
3. L’option la plus appropriée est présentée à l’utilisateur en fonction de `default_method` et des méthodes d’authentification disponibles (par exemple, recevoir un OTP par courriel ou par téléphone, ou entrer un mot de passe).
4. Si l’OTP est la méthode d’authentification retenue, Auth0 envoie un code à l’adresse courriel ou au numéro de téléphone de l’utilisateur.
5. L’utilisateur saisit le code et est authentifié. Si vous avez configuré des passkeys, l’utilisateur est invité à suivre le processus d’inscription progressive aux passkeys.

<Card title="Avant de commencer">
  * Configurez votre locataire pour utiliser le [profil d’authentification Identifier-First](https://auth0.com/docs/authenticate/login/auth0-universal-login/identifier-first).
  * Si vous prévoyez utiliser l’OTP par téléphone (SMS ou voix), vous devez activer le paramètre [Unified Phone Experience](/fr-CA/docs/customize/phone-messages/unified-phone/configure-unified-phone) sous [**Branding > Phone Provider**](https://manage.auth0.com/#/phone/templates/phone/provider).
  * Les [attributs](/fr-CA/docs/authenticate/database-connections/activate-and-configure-attributes-for-flexible-identifiers) doivent être activés dans la connexion de base de données.
  * Si vous prévoyez utiliser des connexions Passwordless existantes (héritées) conjointement avec l’authentification sans mot de passe sur des connexions de base de données, et que vous ne souhaitez pas configurer vos connexions Passwordless existantes pour utiliser Unified Phone Provider :
    1. Accédez à [**Auth0 Dashboard > Authentication > Passwordless**](https://manage.auth0.com/#/connections/passwordless).
    2. Sélectionnez **Configure** pour SMS.
    3. Assurez-vous que le paramètre **Use Tenant-Level Messaging Provider** est désactivé.
</Card>

<div id="configure-attributes-identifiers">
  ## Configurer les attributs (identifiants)
</div>

Lorsque vous configurez l’authentification Passwordless par courriel et par téléphone dans des connexions de base de données, vous devez d’abord déterminer quels attributs vous voulez que les utilisateurs finaux fournissent à l’inscription et à la connexion.

Consultez le type d’identifiant et la méthode d’authentification correspondante :

| Identifiant       | Méthode(s) d’authentification                |
| ----------------- | -------------------------------------------- |
| Courriel          | Mot de passe, OTP par courriel, clé d’accès  |
| Téléphone         | Mot de passe, OTP par téléphone, clé d’accès |
| Nom d’utilisateur | Mot de passe                                 |

Pour les identifiants de courriel et de téléphone, si le mot de passe n’est **pas** activé, vous devez activer la vérification OTP pour l’inscription. Vous pouvez configurer les attributs de courriel et de téléphone comme facultatifs à l’inscription, afin que les utilisateurs puissent s’inscrire uniquement avec un courriel ou uniquement avec un numéro de téléphone.

Lorsqu’un utilisateur s’authentifie au moyen d’un OTP par courriel, `email_verified` est automatiquement défini à `true` dans son profil. Lorsqu’un utilisateur s’authentifie au moyen d’un OTP par téléphone, `phone_verified` est automatiquement défini à `true`.

<Warning>
  Si vous voulez que les utilisateurs finaux s’authentifient avec des clés d’accès, vous **devez** configurer une autre méthode d’authentification, comme le courriel ou le téléphone. L’authentification uniquement par clé d’accès n’est pas prise en charge.
</Warning>

Pour en savoir plus, consultez [Activer et configurer les attributs pour les identifiants flexibles](/fr-CA/docs/authenticate/database-connections/activate-and-configure-attributes-for-flexible-identifiers).

<div id="create-a-new-database-connection">
  ## Créer une nouvelle connexion de base de données
</div>

Si vous n’avez pas de connexion de base de données existante, créez-en une à l’aide de l’Auth0 Dashboard ou de la Management API.

<Tabs>
  <Tab title="Auth0 Dashboard" icon="browser">
    1. Accédez à [**Auth0 Dashboard > Authentication > Database**](https://manage.auth0.com/#/connections/database). Sélectionnez **Create DB Connection** pour créer la connexion.
    2. Entrez un nom unique pour votre connexion.
    3. Choisissez un ou plusieurs attributs que les utilisateurs finaux pourront utiliser pour se connecter ou s’inscrire.
    4. Sélectionnez votre ou vos méthodes d’authentification. Vous pourrez les configurer plus en détail une fois la connexion créée.
    5. Activez **Disable Sign Ups** si vous ne voulez pas que les utilisateurs puissent s’inscrire à l’aide de points de terminaison publics.
    6. Activez **Promote Connection to Domain Level** si vous voulez utiliser cette connexion avec des applications tierces.
    7. Sélectionnez **Create**.

    Pour une véritable connexion Passwordless, effectuez aussi les étapes suivantes :

    1. Dans votre nouvelle connexion, sélectionnez l’onglet **Attributes**.
    2. Pour désactiver Username comme identifiant, sélectionnez **Configure**, puis désactivez **Use Username as Identifier**.
    3. Pour configurer les identifiants de courriel et de téléphone, sélectionnez **Configure**.

    * Pour les attributs de courriel, sélectionnez **One-Time Password (OTP)** sous Verification Methods et activez **Verify email on sign up** pour une configuration véritablement sans mot de passe. Cela garantit que `email_verified` est défini automatiquement afin que les utilisateurs soient toujours invités à fournir un OTP à la connexion et à l’inscription.

    4. Sélectionnez **Save**.

    5. Configurez les paramètres des méthodes d’authentification correspondant aux identifiants choisis. Vous ne pouvez pas désactiver le mot de passe à moins que `phone_otp` et/ou `email_otp` soient configurés.

    6. Sous les paramètres de mot de passe, sélectionnez **Policy** et choisissez **Block** pour :

       * Mot de passe à la connexion
       * Mot de passe à l’inscription
       * Modification du mot de passe en libre-service (mise à jour automatique)

    7. Activez **Support users without a password**.
           <Warning>
             Vous pourriez obtenir une erreur si vous n’activez pas **Support users without a password**.
           </Warning>

    8. Sélectionnez **Save**. Dans l’invite, sélectionnez **Continue** pour confirmer que vous comprenez que les utilisateurs existants pourraient être touchés.

    9. Accédez à l’onglet **Applications** et activez la connexion pour votre application ou votre API.
  </Tab>

  <Tab title="Management API" icon="code">
    <Callout icon="file-lines" color="#0EA5E9" iconType="regular">
      Pour utiliser la Management API, vous avez besoin d’un [jeton d’accès à la Management API](/fr-CA/docs/secure/tokens/access-tokens/management-api-access-tokens/get-management-api-access-tokens-for-production).
    </Callout>

    Appelez le point de terminaison [Create a Connection](https://auth0.com/docs/api/management/v2/connections/post-connections). Utilisez l’option `default_method` pour définir la première méthode d’authentification de chaque identifiant.

    ```bash expandable lines theme={null}
    curl --location 'https://YOUR_AUTH0_TENANT/api/v2/connections' \
    --header 'Authorization: Bearer YOUR_MANAGEMENT_API_TOKEN' \
    --header 'Accept: application/json, text/plain, */*' \
    --header 'Content-Type: application/json' \
    --data '{
      "name": "YOUR_CONNECTION_NAME",
      "strategy": "auth0",
      "is_domain_connection": false,
      "options": {
        "disable_signup": false,
        "attributes": {
          "email": {
            "identifier": {
              "active": true,
              "default_method": "email_otp"
            },
            "profile_required": true,
            "signup": {
              "status": "required",
              "verification": {
                "active": true
              }
            },
            "verification_method": "otp",
            "unique": true
          },
          "phone_number": {
            "identifier": {
              "active": true,
              "default_method": "password"
            },
            "profile_required": true,
            "signup": {
              "status": "required",
              "verification": {
                "active": true
              }
            }
          },
          "username": {
            "identifier": {
              "active": true
            },
            "profile_required": true,
            "signup": {
              "status": "required"
            },
            "validation": {
              "min_length": 1,
              "max_length": 15,
              "allowed_types": {
                "email": false,
                "phone_number": false
              }
            }
          }
        },
        "authentication_methods": {
          "password": {
            "enabled": true
          },
          "passkey": {
            "enabled": false
          },
          "email_otp": {
            "enabled": true
          },
          "phone_otp": {
            "enabled": true
          }
        }
      }
    }'
    ```
  </Tab>
</Tabs>

<div id="update-existing-connections">
  ## Mettre à jour les connexions existantes
</div>

Si vous avez des connexions de base de données existantes, mettez à jour les paramètres de Passwordless dans Auth0 Dashboard ou via la Management API.

<Tabs>
  <Tab title="Auth0 Dashboard" icon="browser">
    1. **Ouvrir la connexion** : Accédez à [**Auth0 Dashboard > Authentication > Database**](https://manage.auth0.com/#/connections/database) et sélectionnez la connexion que vous souhaitez mettre à jour.
    2. **Activer les attributs** : Sous l’onglet **Attributes**, sélectionnez **Activate** pour activer la nouvelle configuration des attributs.
    3. **Ajouter les attributs Email et Phone** : Choisissez **+ Add Attributes** et ajoutez Email et Phone Number s’ils ne sont pas déjà présents.

           <Callout icon="file-lines" color="#0EA5E9" iconType="regular">
             Pour une connexion Passwordless (OTP) véritablement sans mot de passe, l’identifiant `username` n’est pas pris en charge.
           </Callout>
    4. **Activer les méthodes d’authentification OTP** : Sous l’onglet **Authentication Methods** :
       * Configurez Phone pour **Allow** Phone OTP et enregistrez vos modifications.
       * Configurez Email pour **Allow** Email OTP et enregistrez vos modifications.
    5. **Bloquer l’authentification par mot de passe** : Dans les paramètres Password, choisissez **Policy** et sélectionnez **Block** pour :

       * Password on Login
       * Password on Signup
       * Self-service change password

       Activez **Support users without a password**.

           <Warning>
             Vous pourriez recevoir une erreur si vous n’activez pas **Support users without a password**.
           </Warning>
    6. **Enregistrer** : Sélectionnez **Save**.
  </Tab>

  <Tab title="Management API" icon="code">
    <Callout icon="file-lines" color="#0EA5E9" iconType="regular">
      Pour utiliser la Management API, vous avez besoin d’un [jeton d’accès à la Management API](/fr-CA/docs/secure/tokens/access-tokens/get-management-api-access-tokens-for-production).
    </Callout>

    Appelez le point de terminaison [Update a Connection](https://auth0.com/docs/api/management/v2/connections/patch-connections-by-id). Ajoutez l’option `default_method` pour définir la première méthode d’authentification. Pour les attributs Email, définissez `password` ou `email_otp`. Pour les attributs Phone, définissez `password` ou `phone_otp`.

    ```bash theme={null}
    curl -L -X PATCH "https://YOUR_AUTH0_TENANT/api/v2/connections/<connection_id>" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer YOUR_MANAGEMENT_API_TOKEN" \
    -d '{
      "options": {
        "passwordPolicy": "none",
        "authentication_methods": {
          "password": { "enabled": true },
          "passkey": { "enabled": true },
          "email_otp": { "enabled": true },
          "phone_otp": { "enabled": true }
        },
        "attributes": {
          "email": {
            "signup": {
              "status": "required",
              "verification": { "active": true }
            },
            "unique": true,
            "identifier": {
              "active": true,
              "default_method": "email_otp"
            },
            "profile_required": true,
            "verification_method": "otp"
          },
          "phone_number": {
            "signup": {
              "status": "required",
              "verification": { "active": true }
            },
            "identifier": {
              "active": true,
              "default_method": "phone_otp"
            },
            "profile_required": true
          }
        }
      }
    }'
    ```
  </Tab>
</Tabs>

<div id="use-auth0-actions">
  ## Utiliser les Actions Auth0
</div>

Pour en savoir plus sur les facteurs d’authentification Passwordless des connexions de base de données, configurez des attributs à l’aide des Actions Auth0.

<div id="post-login-trigger">
  ### Déclencheur post-connexion
</div>

Le déclencheur `post-login` s’exécute après l’authentification d’un utilisateur, mais avant que le serveur d’autorisation ne renvoie un jeton. L’objet `event.authentication` dans [Auth0 Dashboard > Actions > Triggers > Post Login](https://manage.auth0.com/#/actions/flows) expose les méthodes suivantes :

| Méthode             | Paramètre | Description                                                                                       |
| ------------------- | --------- | ------------------------------------------------------------------------------------------------- |
| OTP par courriel    | `email`   | OTP par courriel utilisé pour authentifier l’utilisateur comme premier facteur.                   |
| OTP par SMS         | `sms`     | OTP par téléphone (SMS) utilisé pour authentifier l’utilisateur comme premier facteur.            |
| OTP par appel vocal | `tel`     | OTP par téléphone avec appel vocal utilisé pour authentifier l’utilisateur comme premier facteur. |
| Mot de passe        | `pwd`     | Mot de passe utilisé pour authentifier l’utilisateur comme premier facteur.                       |

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  `email_verified` et `phone_verified` sont définis automatiquement dans le profil de l’utilisateur lorsqu’un utilisateur s’authentifie au moyen d’un OTP par courriel ou d’un OTP par téléphone. Si vous utilisiez auparavant une Action post-connexion pour définir manuellement ces indicateurs, vous pouvez supprimer cette solution de contournement.
</Callout>

Utilisez `event.authentication` pour :

* Déterminer quel facteur Passwordless l’utilisateur a utilisé (`email`, `sms`, `tel` ou `pwd`)
* Ajouter des claims personnalisées aux jetons selon la méthode d’authentification
* Exécuter une logique conditionnelle selon la façon dont l’utilisateur s’est authentifié

<div id="example">
  #### Exemple
</div>

L’exemple suivant lit `event.authentication.methods` afin de détecter quel facteur Passwordless l’utilisateur a validé, puis l’ajoute sous forme de revendication personnalisée au jeton d’identité.

```javascript theme={null}
exports.onExecutePostLogin = async (event, api) => {
  if (!event.authentication?.methods || event.authentication.methods.length === 0) {
    return;
  }

  if (event.connection.name !== 'YOUR_AUTH0_CONNECTION') {
    return;
  }

  const firstFactor = event.authentication.methods[0];

  if (firstFactor.name === 'email') {
    api.idToken.setCustomClaim('https://your-app.com/auth_method', 'email_otp');
  } else if (firstFactor.name === 'sms' || firstFactor.name === 'tel') {
    api.idToken.setCustomClaim('https://your-app.com/auth_method', 'phone_otp');
  } else if (firstFactor.name === 'pwd') {
    api.idToken.setCustomClaim('https://your-app.com/auth_method', 'password');
  }
};
```

<div id="post-challenge-trigger">
  ### Déclencheur post-challenge
</div>

Le déclencheur `post-challenge` s’exécute une fois que les utilisateurs ont terminé une vérification, comme la réinitialisation du mot de passe, la validation du téléphone ou la MFA. L’objet `event.authentication` dans [Auth0 Dashboard > Actions > Triggers > password-reset-post-challenge](https://manage.auth0.com/#/actions/flows) expose les attributs suivants :

| Attribut  | Paramètre      | Description                                                             |
| --------- | -------------- | ----------------------------------------------------------------------- |
| Courriel  | `email`        | Réinitialisation du mot de passe par courriel avec OTP ou lien magique. |
| Téléphone | `phone_number` | Réinitialisation du mot de passe avec OTP par téléphone.                |

<div id="example">
  #### Exemple
</div>

L’exemple suivant lit `event.authentication.methods` pour détecter quel facteur Passwordless a permis de réussir la vérification et l’ajoute au jeton d’identité sous forme de revendication personnalisée.

```javascript theme={null}
exports.onExecutePostChallenge = async (event, api) => {
  if (!event.authentication?.methods || event.authentication.methods.length === 0) {
    return;
  }

  if (event.connection.name !== 'YOUR_AUTH0_CONNECTION') {
    return;
  }

  const firstFactor = event.authentication.methods[0];

  if (firstFactor.name === 'email') {
    api.idToken.setCustomClaim('https://your-app.com/challenge_method', 'email_otp');
  } else if (firstFactor.name === 'phone_number') {
    api.idToken.setCustomClaim('https://your-app.com/challenge_method', 'phone_otp');
  }
};
```

<div id="benefits">
  ## Avantages
</div>

* **Implémentation simplifiée :** Moins de connexions à configurer et à maintenir. Aucune liaison de comptes n’est nécessaire, sauf si vous utilisez des connexions sociales/fédérées avec des connexions de base de données.
* **Expérience utilisateur améliorée :** Proposez des combinaisons d’OTP par courriel et par téléphone avec des mots de passe, des clés d’accès et des connexions sociales/fédérées, le tout dans la même expérience « identifiant d’abord » de Universal Login.
* **Flux d’inscription flexibles :** Configurez les attributs de courriel et de téléphone comme facultatifs lors de l’inscription, afin de permettre aux utilisateurs de s’inscrire avec seulement un courriel ou seulement un numéro de téléphone — idéal pour des expériences d’abord mobiles ou uniquement par courriel.
* **OTP vocal :** L’OTP vocal est inclus comme premier facteur lorsqu’il est configuré dans l’Unified Phone Experience.

<div id="limitations">
  ## Limites
</div>

* Disponible uniquement pour les flux basés sur Universal Login; n’est pas encore pris en charge pour l’authentification basée sur l’API.
* Passwordless n’est pas pris en charge pour les connexions de base de données avec Classic Login.
* Passwordless pour les connexions de base de données ne prend pas en charge Implicit Signup & Login.
* Dans les connexions Passwordless héritées, il n’y avait aucune différence dans l’expérience utilisateur entre l’inscription et la connexion. Les connexions de base de données font une distinction entre l’expérience d’inscription et l’expérience de connexion, ce qui exige une inscription et une connexion *explicites*.
  * Si un utilisateur sans identité Auth0 accède au flux de connexion, le système ne l’inscrira pas automatiquement. L’utilisateur reçoit une erreur après avoir validé l’OTP.
  * Si un utilisateur ayant une identité Auth0 accède au flux d’inscription, l’utilisateur reçoit une erreur après avoir validé l’OTP.

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

* [authentification Passwordless](/fr-CA/docs/authenticate/passwordless)
* [Limites des connexions Passwordless](/fr-CA/docs/authenticate/passwordless/passwordless-connection-limitations)
* [Pratiques exemplaires pour les connexions Passwordless](/fr-CA/docs/authenticate/passwordless/best-practices)
* [Activer et configurer les attributs pour les identifiants flexibles](/fr-CA/docs/authenticate/database-connections/activate-and-configure-attributes-for-flexible-identifiers)
