> ## 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 sans mot de passe sur les connexions de base de données

> Découvrez comment configurer une véritable authentification sans mot de passe 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 phase de lancement du produit";
  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 forfaits {linkify(`${plans}`, "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 sans mot de passe sur les connexions de base de données" stage="ea" contact="support" terms="true" />

Auth0 vous permet de configurer l’authentification sans mot de passe par courriel et par téléphone directement sur une [connexion de base de données](/docs/fr-ca/authenticate/database-connections). Au lieu de créer une connexion distincte pour l’authentification par code à usage unique (OTP), vous pouvez offrir l’ouverture de session sans mot de passe directement à partir de votre connexion de base de données. Cela réduit la complexité de la mise en œuvre et simplifie l’expérience d’ouverture de session pour les utilisateurs finaux. Pour l’authentification basée sur une API, consultez [Authentification sans mot de passe sur les connexions de base de données avec l’API d’authentification](/docs/fr-ca/authenticate/database-connections/auth-api-passwordless-db-connections).

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  L’authentification sans mot de passe pour les connexions de base de données n’est pas prise en charge avec Classic Login. Pour utiliser l’authentification sans mot de passe sur les connexions de base de données avec des API, consultez [Authentification sans mot de passe sur les connexions de base de données avec l’API d’authentification](/docs/fr-ca/authenticate/database-connections/auth-api-passwordless-db-connections).
</Callout>

<div id="how-it-works">
  ## Comment ça fonctionne
</div>

Auth0 utilise une approche d’[authentification Identifier-First](/docs/fr-ca/authenticate/login/auth0-universal-login/identifier-first) dans laquelle l’identité des utilisateurs est vérifiée par authentification OTP :

1. Un utilisateur final saisit un identifiant pour se connecter. L’authentification sans mot de passe fonctionne avec Auth0 Universal Login ou par l’intermédiaire de l’[API d’authentification](/docs/fr-ca/authenticate/database-connections/auth-api-passwordless-db-connections).
2. Auth0 recherche les méthodes d’authentification pour chaque identifiant configuré sur votre connexion de base de données.
3. L’option la plus appropriée est proposé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 saisir un mot de passe).
4. Si l’OTP est la méthode d’authentification retenue, Auth0 envoie un code à l’adresse courriel ou au téléphone de l’utilisateur.
5. L’utilisateur saisit le code et est authentifié. Si vous avez configuré des clés d’accès, l’utilisateur est invité à effectuer une inscription progressive aux clés d’accès.

<Card title="Avant de commencer">
  * Configurez votre tenant pour utiliser l’[Authentication Profile Identifier-First](/docs/fr-ca/authenticate/login/auth0-universal-login/identifier-first).
  * Si vous prévoyez utiliser l’OTP par téléphone (SMS ou Voice), vous devez activer le paramètre [Unified Phone Experience](/docs/fr-ca/customize/phone-messages/unified-phone/configure-unified-phone) sous [**Branding > Phone Provider**](https://manage.auth0.com/#/phone/templates/phone/provider).
  * Les [Attributes](/docs/fr-ca/authenticate/database-connections/activate-and-configure-attributes-for-flexible-identifiers) doivent être activés sur la connexion de base de données.
  * Si vous prévoyez utiliser des connexions Passwordless existantes (Legacy) 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 le 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 sans mot de passe par courriel et par téléphone pour 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é, la vérification par OTP doit être activée 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 avec seulement un courriel ou seulement un numéro de téléphone.

Lorsqu’un utilisateur s’authentifie au moyen d’un OTP par courriel, `email_verified` passe automatiquement à `true` dans son profil. Lorsqu’un utilisateur s’authentifie au moyen d’un OTP par téléphone, `phone_verified` passe automatiquement à `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 avec des clés d’accès n’est pas prise en charge.
</Warning>

Pour en savoir plus, consultez [Activer et configurer les attributs pour les identifiants flexibles](/docs/fr-ca/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 du 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). Choisissez **Create DB Connection** pour créer la connexion.
    2. Saisissez 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 davantage une fois la connexion créée.
    5. Activez la bascule **Disable Sign Ups** si vous ne voulez pas que les utilisateurs puissent s’inscrire à l’aide de points de terminaison publics.
    6. Activez la bascule **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, suivez aussi les étapes suivantes :

    1. Dans votre nouvelle connexion, sélectionnez l’onglet **Attributes**.
    2. Pour désactiver Username comme identifiant, sélectionnez **Configure** et désactivez la bascule **Use Username as Identifier**.
    3. Pour configurer les identifiants Email et Phone, sélectionnez **Configure**.

    * Pour les attributs Email, sélectionnez **One-Time Password (OTP)** sous Verification Methods et activez **Verify email on sign up** pour une configuration véritablement passwordless. Ainsi, `email_verified` sera défini automatiquement et les utilisateurs devront toujours 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 d’avoir configuré `phone_otp` et/ou `email_otp`.

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

       * Password on Login
       * Password on Signup
       * Self-service change password (se met à jour automatiquement)

    7. Activez la bascule **Support users without a password**.
           <Callout icon="file-lines" color="#0EA5E9" iconType="regular">
             Vous pourriez obtenir une erreur si vous n’activez pas la bascule **Support users without a password**.
           </Callout>

    8. Sélectionnez **Save**. Dans le prompt, 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](/docs/fr-ca/secure/tokens/access-tokens/management-api-access-tokens/get-management-api-access-tokens-for-production).
    </Callout>

    Appelez le endpoint [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 pour 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 déjà des connexions de base de données, mettez à jour les paramètres de Passwordless dans l’Auth0 Dashboard ou au moyen de la Management API.

<Tabs>
  <Tab title="Auth0 Dashboard" icon="browser">
    1. **Ouvrez 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 Attributes** : Sous l’onglet **Attributes**, sélectionnez **Activate** pour activer la nouvelle configuration des attributs.
    3. **Ajouter les attributs Email et Phone** : Sélectionnez **+ 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 la bascule **Support users without a password**.

           <Callout icon="file-lines" color="#0EA5E9" iconType="regular">
             Vous pourriez obtenir une erreur si vous n’activez pas la bascule **Support users without a password**.
           </Callout>
    6. **Save** : 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](/docs/fr-ca/secure/tokens/access-tokens/get-management-api-access-tokens-for-production).
    </Callout>

    Envoyez une requête à l’endpoint [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 mieux comprendre les facteurs d’authentification sans mot de passe des connexions de base de données, configurez les attributs à l’aide des Actions Auth0.

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

Le déclencheur `post-login` se déclenche après l’authentification d’un utilisateur, mais avant que le serveur d’autorisation 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                                                                              |
| ------------------------- | --------- | ---------------------------------------------------------------------------------------- |
| Email OTP                 | `email`   | Email OTP utilisé pour authentifier l’utilisateur comme premier facteur.                 |
| Phone OTP par texto       | `sms`     | Phone OTP (SMS) utilisé pour authentifier l’utilisateur comme premier facteur.           |
| Phone OTP par appel vocal | `tel`     | Phone OTP par 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 utilisateur lorsqu’un utilisateur s’authentifie au moyen d’un Email OTP ou d’un Phone OTP. Si vous utilisiez auparavant une Action post-login pour définir manuellement ces indicateurs, vous pouvez supprimer cette solution de contournement.
</Callout>

Utilisez `event.authentication` pour :

* Détecter quel facteur sans mot de passe 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` pour détecter le facteur sans mot de passe utilisé par l’utilisateur et l’ajoute au jeton d’identité sous forme de revendication personnalisée.

```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 après qu'un utilisateur a terminé un challenge, comme une réinitialisation du mot de passe, une validation du numéro de téléphone ou l’authentification multifacteur (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                                                    |
| --------- | -------------- | -------------------------------------------------------------- |
| Email     | `email`        | Réinitialisation du mot de passe avec Email OTP ou Magic Link. |
| Téléphone | `phone_number` | Réinitialisation du mot de passe avec Phone OTP.               |

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

L’exemple suivant lit `event.authentication.methods` pour détecter quel facteur sans mot de passe a permis de réussir la vérification, puis l’ajoute à titre de revendication personnalisée dans le jeton d’ID.

```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>

* **Mise en œuvre 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 conjointement avec des connexions de base de données.
* **Expérience utilisateur améliorée**: Offrez des combinaisons d’OTP par courriel et par téléphone avec des mots de passe, des passkeys et la connexion sociale/fédérée, le tout dans la même expérience d’abord centrée sur l’identifiant dans Universal Login.
* **Flux d'inscription flexibles**: Configurez les attributs de courriel et de téléphone comme facultatifs à l’inscription, afin que les utilisateurs puissent s’inscrire avec seulement un courriel ou seulement un numéro de téléphone — idéal pour les expériences axées sur le mobile ou uniquement sur le courriel.
* **OTP vocal**: L’OTP vocal est inclus comme premier facteur lorsqu’il est configuré dans Unified Phone Experience.

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

* [Authentification sans mot de passe](/docs/fr-ca/authenticate/passwordless)
* [Utiliser l’API d’authentification pour la connexion sans mot de passe sur les connexions de base de données](/docs/fr-ca/authenticate/database-connections/auth-api-passwordless-db-connections)
* [Inscription et connexion implicites pour les connexions de base de données sans mot de passe](/docs/fr-ca/authenticate/database-connections/implicit-signup-database-connections)
* [Limitations des connexions sans mot de passe](/docs/fr-ca/authenticate/passwordless/passwordless-connection-limitations)
* [Bonnes pratiques relatives aux connexions sans mot de passe](/docs/fr-ca/authenticate/passwordless/best-practices)
* [Activer et configurer les attributs pour les identifiants flexibles](/docs/fr-ca/authenticate/database-connections/activate-and-configure-attributes-for-flexible-identifiers)
