Passer au contenu principal
Configurez votre connexion de base de données pour migrer automatiquement vos utilisateurs d’un répertoire d’utilisateurs externe vers Auth0 à l’aide de scripts d’action de base de données personnalisés.
Si vous essayez d’utiliser plus d’une méthode de migration (par exemple, la migration automatique puis l’importation groupée d’utilisateurs), vous pourriez rencontrer une erreur DUPLICATED_USER. Cette erreur indique que l’utilisateur existe dans le répertoire interne d’utilisateurs d’Auth0, mais pas dans votre locataire. Pour corriger cette erreur, supprimez l’utilisateur à l’aide du point de terminaison Delete a Connection User de l’Auth0 Management API, puis réessayez l’importation.

Configurer une connexion de base de données comme connexion personnalisée

Créez une connexion de base de données, puis définissez-la comme connexion personnalisée.
  1. Accédez à Auth0 Dashboard > Authentication > Database et sélectionnez la base de données à afficher.
  2. Sélectionnez la vue Custom Database, puis activez Use my own database.
    Paramètres de Custom Database d’une connexion de base de données dans Authentication de l’Auth0 Dashboard avec Use Own Database activé
  3. Sélectionnez la vue Settings, activez Import Users to Auth0, puis cliquez sur Save.

Configurer les scripts d’action de la base de données

Sélectionnez l’onglet Custom Database, puis repérez Scripts d’action de la base de données.
Onglet Base de données personnalisée de la connexion de base de données dans Auth0 Dashboard, section Scripts d’action de la base de données

Login

Le script Login s’exécute chaque fois qu’un utilisateur qui n’existe pas dans Auth0 tente de se connecter. Il vérifie que l’utilisateur existe dans le répertoire d’utilisateurs externe sans lui redemander son mot de passe.

Get User

Le script Get User s’exécute dans l’un ou l’autre des cas suivants :
  • Un utilisateur lance une tentative d’inscription.
  • Un utilisateur lance un flux de changement de mot de passe.
  • Un utilisateur saisit son identifiant de connexion lorsqu’il utilise Identifier First + Biometrics.
  • Les points de terminaison Update a User’s Email or Username ou Create User sont appelés.
Si un utilisateur qui n’a pas été migré confirme un changement de mot de passe et se connecte avec succès, son profil utilisateur sera créé dans Auth0 avec le nouveau mot de passe. Ce profil utilisateur contient toutes les données renvoyées par le script Get User. Toutes les connexions suivantes de cet utilisateur se feront directement dans Auth0.

Vérifiez que la migration des utilisateurs est terminée

Vérifiez que tous les utilisateurs ont été migrés vers le répertoire d’utilisateurs Auth0 à l’aide du ou de l’Auth0 Management API.
  1. Accédez à Auth0 Dashboard > User Management > Users et examinez la liste des utilisateurs.
  2. Utilisez le point de terminaison List or Search Users de l’Auth0 Management API.

Déconnecter le répertoire d’utilisateurs externe

Reconfigurez les scripts d’action de base de données en fonctions qui n’effectuent aucune opération. Cela empêchera Auth0 de communiquer avec votre répertoire d’utilisateurs externe pour authentifier les utilisateurs.
Assurez-vous de laisser l’option Importer les utilisateurs vers Auth0 activée. Si vous désactivez cette option, Auth0 utilisera uniquement les scripts pour authentifier les utilisateurs et effectuer d’autres opérations sur les utilisateurs, au lieu d’utiliser les utilisateurs importés localement.
  1. Accédez à Auth0 Dashboard > Authentication > Database, puis sélectionnez votre connexion de base de données.
  2. Basculez vers la vue Custom Database, puis repérez Scripts d’action de base de données.
  3. Mettez à jour le script Login.
    function login (email, password, callback) {
      return callback(null, null);
    }
    
  4. Mettez à jour le script Get User.
    function getByEmail (email, callback) {
      return callback(null, null);
    }
    

Résoudre les problèmes liés à la migration des utilisateurs

Si vous rencontrez des problèmes avec la migration automatique, consultez d’abord les bonnes pratiques pour les connexions de base de données personnalisées et les scripts d’action.

L’utilisateur existe déjà

Voici les scénarios les plus courants dans lesquels vous pourriez rencontrer ce problème :
  • Vous supprimez un utilisateur de votre connexion de base de données, puis essayez de recréer cet utilisateur.
  • Vous tentez de créer un nouvel utilisateur dans votre connexion de base de données alors que l’utilisateur existe déjà dans votre répertoire d’utilisateurs externe.
  • Le processus de migration d’un utilisateur a été interrompu.
Pendant le processus de migration des utilisateurs, Auth0 crée d’abord un profil utilisateur partiel dans un répertoire d’utilisateurs interne, puis crée un profil utilisateur complet dans votre connexion de base de données. Si un problème empêche la création de ce profil utilisateur complet, vous pourriez obtenir l’erreur The user already exists. Vous pouvez généralement résoudre ce problème en supprimant l’utilisateur de la connexion de base de données, en supprimant l’utilisateur du répertoire d’utilisateurs interne, puis en relançant le processus de migration.
  1. Vérifiez les appels console.log() dans les journaux en temps réel des Actions.
  2. Supprimez l’utilisateur à l’aide du point de terminaison Delete a User de la Management API.
  3. Supprimez l’utilisateur à l’aide du point de terminaison Delete a Connection User de la Management API.
  4. Demandez à l’utilisateur d’ouvrir une session ou de modifier son mot de passe pour relancer la migration.

Métadonnées manquantes

Si un utilisateur est interrompu pendant le flux de connexion ou de changement de mot de passe qui lance le processus de migration, il se peut qu’Auth0 ne puisse pas transférer ses métadonnées (user_metadata ou app_metadata) avec ses autres données de profil. Vous pouvez atténuer ce scénario en créant une Action qui vérifie si le profil de l’utilisateur ne contient pas de métadonnées, les récupère à partir du répertoire d’utilisateurs externe, puis les stocke dans Auth0.

En savoir plus