Passer au contenu principal
La fonctionnalité de migration des utilisateurs s’appuie sur une fonctionnalité de base d’Auth0 appelée « bases de données personnalisées », combinée à des points de terminaison URL dans l’extension Login by Auth0, pour permettre aux utilisateurs de s’authentifier avec des comptes utilisateur WordPress existants. Pour en savoir plus sur les bases de données personnalisées, consultez Connexions de bases de données personnalisées.

Fonctionnement

Lorsque vous activez la migration des données, le plugin expose deux points de terminaison sécurisés qui permettent à Auth0 d’authentifier des utilisateurs à l’aide de comptes WordPress. Ces points de terminaison sont protégés par un jeton secret et peuvent être configurés pour n’autoriser que les adresses IP utilisées par Auth0. Le flux de connexion se déroule comme suit :
  1. Un utilisateur tente de se connecter au moyen d’un formulaire de connexion Auth0 (intégré à votre site ou hébergé par Auth0).
  2. Si Auth0 ne trouve pas d’utilisateur associé aux identifiants fournis dans votre connexion de base de données, il appelle alors le point de terminaison de migration sur votre site WordPress avec les identifiants de l’utilisateur et le jeton de migration.
  3. Le plugin trouve un utilisateur dans votre base de données WordPress à l’aide du nom d’utilisateur ou du courriel fourni, puis vérifie le mot de passe.
  4. Si l’utilisateur peut être authentifié avec succès, Auth0 crée l’utilisateur dans la connexion de base de données de votre site, l’authentifie et ouvre sa session.
  5. La prochaine fois que l’utilisateur se connectera, il utilisera son compte utilisateur Auth0, et le point de terminaison de migration sera ignoré.
La migration des utilisateurs doit être configurée au moment où le site est connecté à Auth0 pour la première fois. Toute tentative d’activer ou de désactiver des scripts de base de données personnalisés pour une connexion de base de données qui contient déjà des utilisateurs échouera. Consultez la section Dépannage pour en savoir plus sur le passage d’un mode à l’autre.

Mise en place et configuration

La façon la plus simple de configurer la migration des utilisateurs consiste à utiliser l’assistant de configuration lors de la première installation de l’extension. Pour en savoir plus sur le processus, consultez Installer Login by Auth0. Si l’assistant de configuration de la migration des utilisateurs n’a pas pu être mené à bien, ou si vous souhaitez voir le processus plus en détail, suivez les étapes ci-dessous. Ici encore, vous partez de zéro avec une connexion de base de données qui ne contient aucun utilisateur. Le processus suivant doit être effectué sur un site sans trafic ou avec le mode maintenance activé.
  1. Créez et configurez correctement une application, puis créez et activez une connexion de base de données vide pour l’application. Vous pouvez utiliser la même application et la même connexion que celles créées dans le processus standard de l’assistant de configuration, ou les créer à partir de zéro. Pour en savoir plus sur l’assistant de configuration, consultez Installer Login by Auth0.
  2. Dans l’écran Auth0 > Settings de WordPress, assurez-vous que le Domaine, l’ID client et le Secret client de l’application sont bien enregistrés dans les champs correspondants de l’onglet Basic.
  3. Dans la vue Advanced, activez le paramètre User Migration Endpoints, puis sélectionnez Save Changes. Si vous utilisez des paramètres définis par des constantes, réglez AUTH0_ENV_MIGRATION_WS sur true et AUTH0_ENV_MIGRATION_TOKEN sur une chaîne aléatoire sécurisée d’au moins 16 caractères, sans guillemets simples ni barres obliques inverses.
  4. Dans les paramètres, vous devriez maintenant voir un jeton de sécurité. Gardez cette page ouverte, car vous aurez besoin de cette valeur plus tard dans la procédure.
  5. Dans l’Auth0 Dashboard, accédez à la connexion de base de données que vous souhaitez utiliser, puis activez Requires Username et Import Users to Auth0.
  6. Sélectionnez la vue Base de données personnalisée, puis activez Utiliser ma propre base de données.
  7. Il devrait y avoir deux onglets sous ce paramètre, dans Database Action Scripts : un pour Login et un pour Get User.
  8. Sélectionnez la vue Connexion, supprimez le code existant, copiez le code db-login.js du dépôt GitHub, puis collez-le dans l’éditeur de code.
  9. Cette étape s’applique aux versions 3.10.0 et antérieures : Repérez {THE_WS_URL} et remplacez-le par l’URL du site de votre instance WordPress, suivie de /index.php?a0_action=migration-ws-login. Vous trouverez l’URL du site dans l’écran Settings > General de wp-admin. Vous pouvez le vérifier en collant l’URL complète dans votre navigateur. Vous devriez voir {"status":401,"error":"Unauthorized"}.
  10. Cette étape concerne les versions 3.10.0 et antérieures : repérez {THE_WS_TOKEN} et remplacez-le par le jeton qui figure dans le paramètre User Migration Endpoints.
  11. Il ne devrait y avoir aucune erreur dans l’éditeur. Si tout semble correct, cliquez sur Enregistrer en haut.
  12. Cette étape s’applique à la version 3.11.0 et aux versions ultérieures : Faites défiler la page jusqu’à Settings et ajoutez les variables de configuration suivantes :
    • endpointUrl défini à l’URL du site de votre instance WordPress (wp-admin > Settings > General > champ “Site URL”), suivie de /index.php?a0_action=.
    • migrationToken défini à la valeur du jeton de sécurité indiquée à l’étape 4 ci-dessus.
    • userNamespace défini au nom de votre application dans Auth0, ou à toute autre valeur ne contenant que des lettres, des chiffres et des tirets.
    Paramètres personnalisés de la base de données de l’extension WordPress
  13. Cliquez sur le bouton Essayer en haut et utilisez un compte WordPress valide dans le formulaire qui s’affiche. Vous devriez voir “Le profil est” suivi des données de l’utilisateur. Sinon, veuillez consulter la section Dépannage ci-dessous.
  14. Sélectionnez la vue Get User, effacez le code existant, copiez le code db-get-user.js du dépôt GitHub, puis collez-le dans l’éditeur de code.
  15. Cette étape s’applique à la version 3.10.0 et aux versions antérieures : Recherchez {THE_WS_URL} et remplacez-le par l’URL du site de votre instance WordPress, suivie de /index.php?a0_action=migration-ws-get-user. L’URL du site se trouve dans l’écran Réglages > Général de wp-admin. Vous pouvez le vérifier en collant l’URL complète dans votre navigateur. Vous devriez voir {"status":401,"error":"Unauthorized"}.
  16. Cette étape s’applique à la version 3.10.0 ou aux versions antérieures : Recherchez {THE_WS_TOKEN} et remplacez-le par le jeton affiché sous le paramètre Points de terminaison de migration d’utilisateurs.
  17. Il ne devrait y avoir aucune erreur dans l’éditeur. Si tout semble bon, cliquez sur Enregistrer.
  18. Cliquez sur le bouton Essayer en haut, puis saisissez dans le formulaire qui s’affiche un courriel associé à un compte utilisateur WordPress valide. Vous devriez voir “The profile is”, suivi des données de l’utilisateur. Sinon, veuillez consulter la section Dépannage ci-dessous.
  19. Dans une nouvelle session de navigateur, accédez à une page de connexion du site WordPress et tentez de vous connecter (l’utilisateur ne doit pas déjà exister dans la base de données). Vous remarquerez qu’au départ, la connexion prend un peu plus de temps que d’habitude, mais elle devrait aboutir. Les connexions suivantes seront plus rapides.
  20. (FACULTATIF) Pour activer une sécurité supplémentaire pour les points de terminaison de migration, accédez à l’écran Auth0 > Settings dans WordPress, activez l’option, puis cliquez sur Save Changes. Essayez d’ouvrir une session avec un autre utilisateur pour vérifier qu’Auth0 peut toujours accéder aux points de terminaison.
À ce stade, la configuration de la migration des utilisateurs est terminée, et les utilisateurs WordPress existants seront migrés graduellement vers la Connexion de base de données d’Auth0.

Dépannage

Les problèmes liés à la migration des utilisateurs proviennent généralement de quelques causes :
  • URL ou jeton incorrect dans les scripts de base de données personnalisés.
  • Liste d’autorisation d’adresses IP activée, mais avec des adresses IP incorrectes.
  • Points de terminaison restreints ou mis en cache sur votre instance WordPress.
Pour commencer le dépannage, le mieux est d’utiliser le bouton Try du script Login, dans la vue Base de données personnalisée de la connexion de base de données utilisée, sous Auth0 Dashboard > Authentication > Database. Voici les messages d’erreur que vous pourriez voir et les étapes à suivre pour corriger le problème.

Unexpected token < in JSON at position 0

Cela signifie que le script personnalisé ne reçoit pas les données dans un format exploitable. Le problème est probablement causé par une URL de point de terminaison incorrecte dans le script de base de données. Commencez par copier l’URL à la ligne 10 du script, puis collez-la dans votre navigateur. Si le point de terminaison est correct, l’un des deux messages ci-dessous devrait s’afficher : {"status":401,"error":"Unauthorized"} // ou {"status":403,"error":"Forbidden"} Si vous voyez plutôt la page d’accueil ou une erreur 404, c’est que l’URL est incorrecte. Repérez l’URL de votre site sous Settings > General > Site URL dans l’interface d’administration de WordPress. Ajoutez /index.php?a0_action=migration-ws-login à la fin pour le script Login et /index.php?a0_action=migration-ws-get-user à la fin pour le script Get User.
  • Pour les versions 3.10.0 et antérieures : La valeur de l’URL devrait apparaître directement dans le script comme premier paramètre de l’appel request.post.
  • Pour les versions 3.11.0 et ultérieures : La valeur du jeton devrait être enregistrée dans une variable de configuration. Ajoutez ce qui suit à la première ligne de la fonction et utilisez le bouton Try pour voir ce qui est stocké dans endpointUrl :
callback(null, configuration); Si vous êtes certain que les URL sont correctes et que le problème persiste, vérifiez auprès de votre hébergeur pour vous assurer que ces URL ne sont ni mises en cache ni restreintes de quelque façon que ce soit.

Mauvais courriel ou mot de passe

Il s’agit de l’erreur par défaut affichée lorsqu’un autre problème survient. Le moyen le plus simple de diagnostiquer ce qui se passe consiste à afficher temporairement l’erreur renvoyée (ces erreurs sont volontairement peu explicites par défaut afin d’éviter d’afficher quoi que ce soit qui pourrait donner des pistes aux attaquants). À la ligne 30 du script Login, remplacez : callback(null); par : callback(wpUser.error); Enregistrez le script, puis essayez de nouveau la connexion. Vous devriez voir l’un des messages suivants et pouvoir cerner le problème à l’aide des étapes ci-dessous. Une fois le problème résolu, remettez le script dans son état initial.

Interdit

Cela signifie que les points de terminaison de migration sont désactivés dans votre installation WordPress. Dans WordPress, accédez à Auth0 > Settings > Advanced et activez User Migration Endpoints. Assurez-vous que le jeton qui y apparaît est le même que celui utilisé dans les deux scripts de base de données personnalisée :
  • Pour les versions 3.10.0 et antérieures : la valeur du jeton doit apparaître dans le script lui-même après access_token:
  • Pour les versions 3.11.0 et ultérieures : la valeur du jeton doit être enregistrée dans une variable de configuration. Ajoutez ce qui suit à la première ligne de la fonction et utilisez le bouton Try pour voir ce qui est stocké dans migrationToken :
callback(null, configuration);

Non autorisé

Cela signifie que la liste d’adresses IP autorisées pour la migration est activée, mais que l’adresse IP entrante ne s’y trouve pas. Juste sous le script Login, vous devriez voir une liste d’adresses IP :
migration des utilisateurs WordPress - adresses IP d’Auth0
Assurez-vous que toutes ces adresses IP figurent dans WordPress, sous Auth0 > Settings > Advanced dans le plugin :
migration des utilisateurs WordPress - liste d’adresses IP autorisées
Si une ou plusieurs des adresses IP répertoriées dans Auth0 ne figurent pas dans WordPress, ajoutez celles qui manquent dans le champ, puis enregistrez la page des paramètres. Créez aussi une publication dans la communauté Auth0 (en la balisant avec « wordpress ») qui inclut la ou les adresses IP manquantes, afin que nous puissions régler le problème.

Non autorisé : en-tête d’autorisation manquant

Le est soit absent du script de la base de données (ligne 16), soit votre serveur ne traite pas correctement les en-têtes. Vérifiez le script Login et assurez-vous que le jeton est présent et qu’il correspond à celui de WordPress. Si le jeton est bien présent et valide, vous devrez communiquer avec votre hébergeur pour permettre l’analyse de l’en-tête Authorization. Pour obtenir de l’aide sur le dépannage du serveur, consultez Apache 2.4 + PHP-FPM et les en-têtes Authorization sur stackoverflow.com. Pour voir comment le jeton est récupéré, consultez le code du plugin dans le dépôt GitHub.

Jeton invalide

Le jeton de sécurité dans le script de base de données est incorrect. Vérifiez la ligne 16 du script Login et assurez-vous que le jeton correspond à celui de WordPress.

Identifiants invalides

L’adresse courriel ou le mot de passe utilisé est incorrect. Vérifiez que vous entrez la bonne adresse courriel et le bon mot de passe. Vous pouvez réinitialiser le mot de passe de l’utilisateur pour vous assurer d’utiliser le bon.

Impossible de modifier le courriel ou données utilisateur erronées

Si vous utilisez plus d’une connexion de base de données personnalisée dans votre locataire Auth0 et que vous ne parvenez pas à modifier l’adresse courriel, ou que des données utilisateur sont enregistrées pour le mauvais utilisateur, il est probable que des ID utilisateur se chevauchent dans Auth0. Ce problème a été corrigé pour les nouveaux sites qui installent la version 3.11.0, mais pour les connexions créées auparavant, vous devrez le corriger manuellement en procédant de l’une des façons suivantes :
  • Si vous n’avez aucune donnée utilisateur enregistrée à conserver (par exemple, si vous utilisez uniquement la connexion pour permettre l’ouverture de session et que vous ne stockez aucune métadonnée), vous pouvez créer une nouvelle connexion de base de données personnalisée en suivant les étapes ci-dessus (avec les notes de la version 3.11.0) et basculer l’application vers cette nouvelle connexion (assurez-vous de désactiver l’ancienne connexion). La migration redémarrera et il n’y aura aucune incidence sur l’expérience utilisateur.
  • Si vous avez des données dans Auth0 qui doivent être conservées, vous pouvez utiliser notre extension User Import/Export pour ajuster les données utilisateur.
    1. Créez une nouvelle connexion de base de données personnalisée en suivant les étapes ci-dessus (avec les notes de la version 3.11.0).
    2. Exportez tous les utilisateurs de la connexion existante (nous vous recommandons de mettre votre site en mode maintenance pendant la transition afin qu’aucun utilisateur ne soit omis).
    3. Modifiez tous les ID utilisateur pour ajouter l’espace de noms utilisé lors de la création de la nouvelle connexion. Les ID utilisateur devraient passer de quelque chose comme auth0|123 à auth0|Your-WP-Site-Name|123. Ajustez tous les autres champs nécessaires pour respecter le schéma d’importation. Pour en savoir plus, consultez Bulk User Import Database Schema and Examples.
    4. Activez la nouvelle connexion et désactivez l’ancienne connexion pour votre application.
    5. Importez les nouvelles données utilisateur dans la nouvelle connexion et testez.
  • Si vous avez un compte payant, vous pouvez communiquer avec notre équipe de soutien pour exécuter un script de mise à jour de la base de données afin de convertir les ID utilisateur en une version avec espace de noms et d’ajouter cet espace de noms à votre script de base de données en même temps (étape 12 dans Configuration et paramétrage ci-dessus).