Passer au contenu principal
Si vous avez votre propre base de données d’utilisateurs, vous pouvez l’utiliser comme 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.
Assurez-vous que votre base de données contient les champs appropriés pour stocker les attributs du profil utilisateur, comme id, nickname, email et password. Pour en savoir plus sur le schéma de profil utilisateur d’Auth0, consultez Profils utilisateur normalisés. 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.
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 d’Auth0.

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.

Créer la connexion dans l’Auth0 Dashboard

  1. Accédez à Auth0 Dashboard > Authentication > Database, puis sélectionnez Create DB Connection.
  2. Configurez les paramètres de la connexion, puis sélectionnez Create :
ParamètreDéfinition
NameLe 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 identifiersChoisissez le ou les attributs d’identification pour la connexion.
Choose one or more authentication methodsChoisissez une méthode d’authentification pour authentifier les utilisateurs.
Use my own databaseActivez cette option si vous avez une base de données à connecter à Auth0.
Disable Sign UpsEmpêche les nouvelles inscriptions d’utilisateurs à partir des points de terminaison publics.
Promote Connection to Domain LevelFaites 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
  1. Sélectionnez la vue Custom Database, puis activez l’option Use my own database.
    Activer l’option Custom Database Use My Own Database

Créer des scripts d’action de base de données

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 :
NomDescriptionParamètres
Login
Obligatoire
S’exécute chaque fois qu’un utilisateur tente de se connecter.email, password
CréerS’exécute lorsqu’un utilisateur s’inscrit.user
VérifierS’exécute après qu’un utilisateur a suivi le lien de vérification.email
Changer le mot de passeS’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’utilisateurRécupère le profil d’un utilisateur à partir de votre base de données sans l’authentifier.email
SupprimerS’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 et Pratiques exemplaires pour l’exécution des scripts d’action de base de données personnalisés.

Créer un script Login

É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.
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.
    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.
    Fenêtre modale pour tester le script de connexion.
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.

Prise en charge des bases de données personnalisées pour les organisations

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.

Activer l’objet de contexte

  1. Accédez à Auth0 Dashboard > Authentication > 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.
    Une fois activée, cette fonctionnalité ne peut plus être désactivée.
  4. À l’invite de confirmation, sélectionnez Confirm.

Utiliser le contexte d’organisation

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 :
{
    "organization": {
        "display_name": "My Organization",
        "id": "org_XXXXXX",
        "metadata": {
            "example": "value"
        },
        "name": "my-organization"
    }
}
Un contexte vide sera toujours transmis au script delete.

Ajouter des paramètres de configuration

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

En savoir plus