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

> Découvrez comment créer une connexion de base de données.

# Créer des connexions de base de données personnalisées

Si vous avez votre propre base de données d’utilisateurs, vous pouvez l’utiliser comme <Tooltip tip="Fournisseur d’identité (IdP) : service qui stocke et gère les identités numériques." cta="Voir le glossaire" href="/fr-CA/docs/glossary?term=identity+provider">fournisseur d’identité</Tooltip> dans Auth0 pour authentifier les utilisateurs. Suivez le processus pour créer la connexion de base de données personnalisée, créer les scripts d’action pour la base de données et ajouter des paramètres de configuration.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Assurez-vous que votre base de données contient les champs appropriés pour stocker les [attributs du profil utilisateur](/fr-CA/docs/manage-users/user-accounts/user-profiles/user-profile-structure#user-profile-attributes), comme `id`, `nickname`, `email` et `password`. Pour en savoir plus sur le schéma de profil utilisateur d’Auth0, consultez [Profils utilisateur normalisés](/fr-CA/docs/manage-users/user-accounts/user-profiles/normalized-user-profiles). Pour en savoir plus sur la mise à jour des profils utilisateur, consultez [Mettre à jour les profils utilisateur à l’aide de votre base de données](/fr-CA/docs/manage-users/user-accounts/user-profiles/update-user-profiles-using-your-database).
</Callout>

Auth0 vous permet de créer des connexions et des scripts pour la plupart des bases de données les plus couramment utilisées, notamment :

* ASP.NET Identity
* MongoDB
* MySQL
* PostgreSQL
* SQLServer
* Windows Azure SQL Database
* Services web accessibles au moyen de Basic Auth

Vous pouvez vous connecter à n’importe quel type de base de données ou de service web à l’aide d’un script personnalisé correctement configuré. Notez que le nettoyage des données d’entrée doit être effectué du côté du client; Auth0 ne nettoie ni ne valide aucune combinaison de nom d’utilisateur et de mot de passe transmise par une connexion de base de données personnalisée. Les scripts de base de données personnalisée sont assujettis à la [politique de limitation du débit](/fr-CA/docs/troubleshoot/customer-support/operational-policies/rate-limit-policy) d’Auth0.

<Card title="Pare-feu réseau">
  Si vous êtes derrière un pare-feu, cette fonctionnalité peut nécessiter que vous ajoutiez les adresses IP Auth0 appropriées à la liste d’autorisation pour fonctionner correctement.
</Card>

<div id="create-the-connection-in-the-auth0-dashboard">
  ## Créer la connexion dans l’Auth0 Dashboard
</div>

1. Accédez à [Auth0 Dashboard > Authentication > Database](https://manage.auth0.com/#/connections/database), puis sélectionnez **Create DB Connection**.
2. Configurez les paramètres de la connexion, puis sélectionnez **Create** :

| Paramètre                                             | Définition                                                                                                                                                                                        |
| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Name**                                              | Le nom de la connexion. Le nom doit commencer et se terminer par un caractère alphanumérique, contenir uniquement des caractères alphanumériques et des tirets, et ne pas dépasser 35 caractères. |
| **Choose one or more attributes as user identifiers** | Choisissez le ou les [attributs d’identification](/fr-CA/docs/authenticate/database-connections/activate-and-configure-attributes-for-flexible-identifiers) pour la connexion.                    |
| **Choose one or more authentication methods**         | Choisissez une méthode d’authentification pour authentifier les utilisateurs.                                                                                                                     |
| **Use my own database**                               | Activez cette option si vous avez une base de données à connecter à Auth0.                                                                                                                        |
| **Disable Sign Ups**                                  | Empêche les nouvelles inscriptions d’utilisateurs à partir des points de terminaison publics.                                                                                                     |
| **Promote Connection to Domain Level**                | Faites passer cette connexion au niveau du domaine afin de pouvoir l’utiliser avec des applications tierces.                                                                                      |

Une fois qu’Auth0 a créé votre connexion, vous aurez les vues suivantes (en plus de la vue **Settings**) :

* Attributes
  * Authentication Methods
  * Custom Database
  * Applications

3. Sélectionnez la vue **Custom Database**, puis activez l’option **Use my own database**.

   <Frame>
     <img src="https://mintcdn.com/translations/3nS3prIggmJG9TUI/docs/images/cdy7uua7fh8z/3kgHDpBFdVWNq9XOfhsTXI/2efa43e44793b8dd69b9f9e8b54bf752/2025-02-25_10-20-20.png?fit=max&auto=format&n=3nS3prIggmJG9TUI&q=85&s=7aabe24b2fa1559facd2651d06d2fcc2" alt="Activer l’option Custom Database Use My Own Database" width="680" height="259" data-path="docs/images/cdy7uua7fh8z/3kgHDpBFdVWNq9XOfhsTXI/2efa43e44793b8dd69b9f9e8b54bf752/2025-02-25_10-20-20.png" />
   </Frame>

<div id="create-database-action-scripts">
  ## Créer des scripts d’action de base de données
</div>

L’activation du commutateur **Utiliser ma propre base de données** fait apparaître la section **Scripts d’action de base de données**, où vous créerez des scripts pour configurer le fonctionnement de l’authentification avec votre base de données. Vous pouvez rédiger vos scripts d’action de base de données ou sélectionner un modèle dans la liste déroulante **Modèles** et le modifier au besoin.

Vous **devez** configurer un script `login` ; les scripts supplémentaires pour la gestion des utilisateurs sont facultatifs.

Les scripts d’action de base de données disponibles sont :

| Nom                         | Description                                                                                                               | Paramètres             |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ---------------------- |
| **Login**<br />Obligatoire  | S’exécute chaque fois qu’un utilisateur tente de se connecter.                                                            | `email`, `password`    |
| **Créer**                   | S’exécute lorsqu’un utilisateur s’inscrit.                                                                                | `user`                 |
| **Vérifier**                | S’exécute après qu’un utilisateur a suivi le lien de vérification.                                                        | `email`                |
| **Changer le mot de passe** | S’exécute lorsqu’un utilisateur clique sur le lien de confirmation après une demande de réinitialisation du mot de passe. | `email`, `newPassword` |
| **Obtenir l’utilisateur**   | Récupère le profil d’un utilisateur à partir de votre base de données sans l’authentifier.                                | `email`                |
| **Supprimer**               | S’exécute lorsqu’un utilisateur est supprimé au moyen de l’API ou d’Auth0 Dashboard.                                      | `id`                   |

Pour en savoir plus sur les scripts, consultez [Modèles de scripts d’action de base de données personnalisés](/fr-CA/docs/authenticate/database-connections/custom-db/templates) et [Pratiques exemplaires pour l’exécution des scripts d’action de base de données personnalisés](/fr-CA/docs/authenticate/database-connections/custom-db/custom-database-connections-scripts/execution).

<div id="create-a-login-script">
  ### Créer un script Login
</div>

<Card title="Évitez les collisions d’ID utilisateur avec plusieurs bases de données">
  La propriété `id` (ou `user_id`) du profil utilisateur renvoyé sera utilisée par Auth0 pour identifier l’utilisateur.

  Si vous utilisez plusieurs connexions de base de données personnalisées, la valeur de `id` doit être unique dans l’ensemble de ces connexions afin d’éviter les collisions d’ID utilisateur. Nous vous recommandons de faire précéder la valeur de `id` du nom de la connexion (sans espaces). Pour en savoir plus sur les ID utilisateur, consultez [Identifier les utilisateurs](/fr-CA/docs/manage-users/user-accounts/identify-users).
</Card>

Les étapes suivantes utilisent un exemple de script Login pour une base de données MySQL.

1. Après avoir activé le commutateur **Use my own database**, la section **Database Action Scripts** est activée. Assurez-vous d’être dans l’onglet **Login**.
2. Utilisez la liste déroulante **Templates** pour sélectionner le modèle de script de base de données MySQL.

   ```javascript lines expandable theme={null}
   function login(email, password, callback) {
     var bcrypt = require('bcrypt');
     var mysql = require('mysql');
     var connection = mysql.createConnection({
       host: 'localhost',
       user: 'me',
       password: 'secret',
       database: 'mydb'
     });
     connection.connect();
     var query = "SELECT id, nickname, email, password " +
       "FROM users WHERE email = ?";
     connection.query(query, [email], function (err, results) {
       if (err) return callback(err);
       if (results.length === 0) return callback(new WrongUsernameOrPasswordError(email));
       var user = results[0];
       bcrypt.compare(password, user.password, function (err, isValid) {
         if (err) {
           callback(err);
         } else if (!isValid) {
           callback(new WrongUsernameOrPasswordError(email));
         } else {
           callback(null, {
             // Ce préfixe (remplacez-le par le nom de votre propre BD personnalisée)
             // assure l’unicité entre différentes BD personnalisées s’il y a un
             // risque de collision (p. ex., si l’ID utilisateur est une adresse courriel ou un entier)
             id: 'MyConnection1|' + user.id.toString(),
             nickname: user.nickname,
             email: user.email
           });
         }
       });
     });
   }
   ```

   Le script ci-dessus se connecte à une base de données MySQL et exécute une requête pour récupérer le premier utilisateur pour lequel `email == user.email`.
   À l’aide de la méthode `bcrypt.compareSync`, il vérifie ensuite que les mots de passe correspondent et, si c’est le cas, renvoie un objet contenant les renseignements du profil utilisateur, y compris `id`, `nickname` et `email`.
   Ce script suppose que vous avez une table `users` contenant ces colonnes. Le `id` renvoyé par le script Login est utilisé pour construire l’attribut d’ID utilisateur du profil.
3. Sélectionnez **Save and Try**.
4. Dans la fenêtre modale, saisissez votre courriel et votre mot de passe, puis cliquez sur **Try**. Une liste déroulante vous permet de choisir parmi les environnements d’exécution disponibles, avec votre environnement d’exécution actuel en haut de la liste.

   <Frame>
     <img src="https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/8uBGZhHYZwOcO19ljJNNp/ccd69d84fdbdff90dc779a6b1ea8a6fd/db-connection-try-login-script.png?fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=ec2a8cb2d4ce996d1671554ebf503413" alt="Fenêtre modale pour tester le script de connexion." width="496" height="360" data-path="docs/images/cdy7uua7fh8z/8uBGZhHYZwOcO19ljJNNp/ccd69d84fdbdff90dc779a6b1ea8a6fd/db-connection-try-login-script.png" />
   </Frame>

Les modèles de script ne sont pas utilisés par Auth0 tant que vous n’avez pas sélectionné **Save** ou **Try**. C’est le cas même si vous ne modifiez qu’un seul script et n’apportez aucun changement aux autres. Vous devez sélectionner **Save** au moins une fois pour que tous les scripts soient appliqués.

<div id="custom-database-support-for-organizations">
  ## Prise en charge des bases de données personnalisées pour les organisations
</div>

Si vous utilisez des connexions de base de données personnalisées avec les organisations, vous pouvez utiliser le paramètre `context` dans la signature du script pour rendre accessibles à vos scripts d’action de base de données personnalisés des renseignements sur l’organisation, comme `id`, `name` et les métadonnées. Les données de l’organisation sont transmises dans l’objet `context` lorsque l’action associée se produit dans le contexte d’une organisation; par exemple, lorsqu’un utilisateur s’authentifie à l’invite de connexion d’une organisation, le script d’action de connexion est transmis. Pour en savoir plus, consultez [Database Connections](/fr-CA/docs/authenticate/database-connections).

<div id="enable-context-object">
  ### Activer l’objet de contexte
</div>

1. Accédez à [Auth0 Dashboard > Authentication > Database](https://manage.auth0.com/dashboard/us/#/connections/database/).
2. Sélectionnez votre connexion de base de données.
3. Dans l’onglet **Custom Database**, repérez **Context objects in database scripts** et sélectionnez **Enable**.

   <Warning>
     Une fois activée, cette fonctionnalité ne peut plus être désactivée.
   </Warning>
4. À l’invite de confirmation, sélectionnez **Confirm**.

<div id="use-organization-context">
  ### Utiliser le contexte d’organisation
</div>

Une fois l’objet `context` activé dans le Dashboard, vous pouvez ajouter un objet `context` à vos scripts d’action de base de données personnalisés, juste avant le paramètre de rappel. Lorsque des événements sont déclenchés avec le contexte d’organisation, les données correspondantes sont mises à la disposition de vos scripts d’action de base de données personnalisés dans le format ci-dessous :

<Tabs>
  <Tab title="Login">
    ```json lines theme={null}
    {
        "organization": {
            "display_name": "My Organization",
            "id": "org_XXXXXX",
            "metadata": {
                "example": "value"
            },
            "name": "my-organization"
        }
    }
    ```
  </Tab>

  <Tab title="Créer">
    ```json lines theme={null}
    {
        "organization": {
            "display_name": "My Organization",
            "id": "org_XXXXXX",
            "metadata": {
                "example": "value"
            },
            "name": "my-organization"
        }
    }
    ```
  </Tab>

  <Tab title="Vérifier">
    ```json lines theme={null}
    {
        "organization": {
            "display_name": "My Organization",
            "id": "org_XXXXXX",
            "metadata": {
                "example": "value"
            },
            "name": "my-organization"
        }
    }
    ```
  </Tab>

  <Tab title="changer le mot de passe">
    ```json lines theme={null}
    {
        "organization": {
            "display_name": "My Organization",
            "id": "org_XXXXXX",
            "metadata": {
                "example": "value"
            },
            "name": "my-organization"
        }
    }
    ```
  </Tab>

  <Tab title="Récupérer l’utilisateur">
    ```json lines theme={null}
    {
        "organization": {
            "display_name": "My Organization",
            "id": "org_XXXXXX",
            "metadata": {
                "example": "value"
            },
            "name": "my-organization"
        }
    }
    ```
  </Tab>

  <Tab title="Supprimer" />
</Tabs>

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Un contexte vide sera toujours transmis au script `delete`.
</Callout>

<div id="add-configuration-parameters">
  ## Ajouter des paramètres de configuration
</div>

Vous pouvez stocker des paramètres, comme les identifiants nécessaires pour vous connecter à votre base de données, dans la section **Paramètres** sous l’éditeur de script. Ils seront accessibles dans tous vos scripts, et vous pouvez accéder à leurs valeurs à l’aide de l’objet `configuration` dans vos scripts d’action de base de données (c.-à-d. `configuration.MYSQL_PASSWORD`).

Utilisez les paramètres ajoutés dans vos scripts pour configurer la connexion. Par exemple, vous pouvez ajouter ce qui suit au script MySQL Login :

```javascript lines theme={null}
function login (username, password, callback) {
  var mysql = require('mysql');
  var connection = mysql.createConnection({
    host     : configuration.MYSQL_HOST,
    user     : 'me',
    password : configuration.MYSQL_PASSWORD,
    database : 'mydb'
  });
}
```

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

* [Bonnes pratiques pour les scripts de connexion de base de données personnalisée et d’Action](/fr-CA/docs/authenticate/database-connections/custom-db/custom-database-connections-scripts)
* [Résoudre les problèmes liés aux bases de données personnalisées](/fr-CA/docs/authenticate/database-connections/custom-db/error-handling)
* [Importer et exporter des utilisateurs](/fr-CA/docs/manage-users/user-migration)
