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

La disponibilité varie selon le plan Auth0

Votre plan Auth0 ou votre accord personnalisé ont un impact sur la disponibilité de cette fonctionnalité. Pour en savoir plus, lisez Tarification.

Si vous disposez de votre propre base de données d’utilisateurs, vous pouvez l’utiliser comme fournisseur d’identité dans Auth0 pour authentifier des utilisateurs. Dans ce processus, vous allez créer la connexion de base de données personnalisée, créer des scripts d’action de base de données et ajouter des paramètres de configuration.

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

  • Fournisseur d’adhésion ASP.NET

  • MongoDB

  • MySQL

  • PostgreSQL

  • SQLServer

  • Base de données SQL de Windows Azure

  • Services Web accessibles via Auth de base

Vous pouvez vous connecter à n’importe quel type de base de données ou de service Web avec un script personnalisé correctement configuré. Notez que la désinfection des entrées relève de la responsabilité du client; Auth0 ne désinfecte ni ne valide aucune combinaison de nom d’utilisateur/mot de passe transmise par une base de données personnalisée. Les scripts de base de données personnalisée sont soumis à Politique de limites anti-attaques d’Auth0.

Pare-feu réseau

Si vous êtes derrière un pare-feu, cette fonctionnalité pourrait exiger que vous ajoutiez les adresses IP Auth0 appropriées à votre Liste blanche pour que cela fonctionne correctement.

Créer la connexion dans Auth0 Dashboard

  1. Allez à Auth0 Dashboard > Authentication > Database (Tableau de bord Auth0 > Authentification > Base de données) et sélectionnez Create DB Connection (Créer une connexion DB).

  2. Configurez les paramètres de la connexion et cliquez sur Create (Créer):

    Paramètre Définition
    Nom 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.
    Nom d’utilisateur obligatoire Oblige les utilisateurs à fournir un nom d’utilisateur et une adresse courriel lors de l’inscription.
    Longueur du nom d’utilisateur Définit une longueur minimale et maximale pour les noms d’utilisateur.
    Désactiver les inscriptions Empêche les inscriptions pour votre application. Vous pourrez toujours créer des utilisateurs avec vos identifiants API ou via le Auth0 Dashboard.
    Une fois que Auth0 a créé votre connexion, vous disposerez des affichages suivants (en plus de l’affichage des settings [paramètres]) :

    • Attributs

    • Méthodes d’authentification

    • Base de données personnalisée

    • Applications

  3. Sélectionnez l’aperçu Custom Database (Base de données personnalisée), puis faites glisser le bouton Use my own database (Utiliser ma propre base de données).

    Activer l’option Base de données personnalisée Utiliser ma propre base de données

Créer les scripts d’action de la base de données.

L’activation du bouton bascule Use my own database (Utiliser ma propre base de données) active les scripts d’action de la base de données dans laquelle vous allez créer des scripts afin de configurer le mode d’authentification lors de l’utilisation de votre base de données. Vous pouvez écrire vos scripts d’action de base de données, ou vous pouvez sélectionner un modèle dans la liste déroulante des Templates (Modèles) et le modifier, si nécessaire.

Vous must (devez) configurer un script de login. Les scripts additionnels pour les fonctionnalités utilisateur sont facultatifs.

Les scripts d’action de base de données incluent :

Nom Description Paramètres
Connexion
Requis
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 lorsqu’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 un profil utilisateur de votre base de données sans authentifier l’utilisateur. email
Supprimer S’exécute lorsqu’un utilisateur est supprimé à l’aide de l’API ou de Auth0 Dashboard. id

Pour en savoir plus sur les scripts, consultez Modèles de script d’action de base de données personnalisée et Meilleures pratiques d’exécution de script d’action de base de données personnalisée.

Créer un script de connexion

Éviter les collisions d’ID utilisateur avec de multiples bases de données

La propriété id (ou user_id) dans le profil utilisateur retourné sera utilisée par Auth0 pour identifier l’utilisateur.

Si vous utilisez plusieurs connexions de base de données personnalisées, la valeur id doit être unique dans toutes les connexions de bases de données personnalisées pour éviter les collisions d’ID utilisateurs. Notre recommandation est d’ajouter le nom de la connexion (sans espace) en préfixe à la valeur de id. Pour en savoir plus à propos des ID utilisateurs, lisez Identifier les utilisateurs.

Les étapes suivantes utilisent un exemple de script pour se connecter à la base de données MySQL.

  1. Après avoir fait glisser le bouton bascule Use my own database (Utiliser ma propre base de données), la zone Database Action Scripts (Scripts d’action de base de données) s’active. Assurez-vous que vous êtes sur l’onglet Login (Connexion).

  2. Utilisez le menu déroulant de Modèles pour sélectionner le modèle de script de base de données MySQL.

    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, {
              // This prefix (replace with your own custom DB name)
              // ensure uniqueness across different custom DBs if there's the
              // possibility of collisions (e.g. if the user ID is an email address or an integer)
              id: 'MyConnection1|' + user.id.toString(),
              nickname: user.nickname,
              email: user.email
            });
          }
        });
      });
    }

    Was this helpful?

    /
    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 avec email == user.email. Avec la méthode bcrypt.compareSync, il vérifie ensuite si les mots de passe correspondent, puis, si c’est le cas, il renvoie un objet contenant les informations du profil utilisateur, y compris l’id, le nickname et l’email. Ce script suppose que vous avez une tableau users contenant ces colonnes. L’id retourné par le script de connexion est utilisé pour construire l’attribut identifiant utilisateur du profil utilisateur.

  3. Cliquez sur Save and Try (Enregistrer et essayer).

  4. Dans la fenêtre modale, saisissez votre adresse courriel et votre mot de passe, puis cliquez sur Try (Essayer). Cette fonctionnalité propose un menu déroulant pour choisir parmi une liste de temps d’exécution possibles, avec votre temps d’exécution actuel en tête de liste.

    Modal to try the login script.

Les modèles de script ne sont pas utilisés par Auth0 tant que vous n’avez pas cliqué sur Save (Enregistrer) ou Try (Essayer). Ceci est vrai même si vous n’avez modifié qu’un seul script, sans toucher aux autres. Vous devez cliquer sur Save (Enregistrer) au moins une fois pour que tous les scripts soient en place.

Soutien aux organizations en matière de bases de données personnalisées

Si vous utilisez des connexions par base de données personnalisée en conjonction avec Organizations, vous pouvez utiliser le paramètre context dans la signature du script pour rendre les détails de l’organization tels que l’id, name et metadata disponibles pour vos scripts d’action de base de données personnalisée. Les données de l’organization sont envoyées dans l’objet contexte lorsque l’action correspondante se produit dans le contexte de l’organization. Par exemple, lorsqu’un utilisateur s’authentifie à l’invite de connexion d’une organization, le script d’action de connexion est transmis. Pour en savoir plus, consultez Connexions à la base de données.

Activer l’objet contexte

  1. Rendez-vous à Auth0 Dashboard > Authentification > Base de données.

  2. Sélectionnez votre connexion de base de données.

  3. Sous l’onglet Custom Database (Base de données personnalisée), recherchez les Context objects in database scripts (Objet de contexte dans les scripts de base de données) et sélectionnez Enable (Activer).

Utiliser le contexte d’Organization

Une fois que vous avez activé l’objet de contexte sur le Dashboard, vous pouvez ajouter un objet `context` à vos scripts d’action de base de données personnalisée, qui seront insérés juste avant le paramètre de rappel. Lorsque des événements sont déclenchés avec le contexte d’Organization, les données correspondantes sont fournies à vos scripts d’action de base de données personnalisée dans le format suivant :

{
    "organization": {
        "display_name": "My Organization",
        "id": "org_XXXXXX",
        "metadata": {
            "example": "value"
        },
        "name": "my-organization"
    }
}

Was this helpful?

/

Ajouter des paramètres de configuration

Vous pouvez stocker des paramètres, tels que les identifiants client requis pour se connecter à votre base de données, dans la section Settings (Paramètres) sous l’éditeur de script. Ces paramètres seront accessibles pour tous vos scripts et vous pourrez y accéder en utilisant l’objet configuration dans les scripts d’action de votre base de données (p. ex., configuration.MYSQL_PASSWORD).

Utilisez les paramètres ajoutés dans vos scripts pour configurer la connexion. Vous pouvez par exemple ajouter ce qui suit au script de connexion MySQL :

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'
  });
}

Was this helpful?

/

En savoir plus