Migration des utilisateurs dans le plugiciel Login by Auth0 pour WordPress

La fonctionnalité de migration des utilisateurs utilise une fonctionnalité centrale d’Auth0 appelée Custom Databases combinée à des points de terminaison d’URL dans le plugiciel Login by Auth0 pour permettre aux utilisateurs de s’authentifier avec des comptes d’utilisateurs WordPress existants. Pour en savoir plus sur les bases de données personnalisées, lisez Connexions de base de données personnalisées.

Comment cela fonctionne-t-il?

Lorsque vous activez la migration des données, le plugiciel expose deux points de terminaison sécurisés qui permettent à Auth0 d’authentifier les utilisateurs utilisant des comptes WordPress. Ces points de terminaison sont sécurisés par un jeton secret et ne peuvent être configurés que pour autoriser les adresses IP utilisées par Auth0.

Le flux de connexion est le suivant :

  1. Un utilisateur tente de se connecter avec un formulaire de connexion Auth0 (intégré sur votre site ou hébergé chez Auth0).

  2. Si Auth0 ne trouve pas d’utilisateur associé aux informations d’identification fournies dans votre connexion à la base de données, il appelle le point de terminaison Migration sur votre site WordPress avec les identifiants de l’utilisateur et le jeton de migration.

  3. Le plugiciel trouve un utilisateur dans votre base de données WordPress avec le nom d’utilisateur/courriel fourni et vérifie le mot de passe.

  4. Si un utilisateur peut être authentifié avec succès, Auth0 crée l’utilisateur dans la connexion à la base de données de votre site, authentifie l’utilisateur et le connecte.

  5. La prochaine fois que l’utilisateur se connectera, il utilisera l’utilisateur Auth0 et le point de terminaison de la migration sera ignoré.

La migration des utilisateurs doit être configurée lorsque le site est connecté pour la première fois à Auth0. La tentative d’activation ou de désactivation des scripts de base de données personnalisés pour une connexion de base de données qui a déjà eu des utilisateurs échouera. Consultez la section Dépannage pour plus d’informations sur le passage d’un mode à l’autre.

Mise en place et configuration

La façon la plus simple de planifier la migration des utilisateurs est d’utiliser l’assistant de configuration lorsque le plugiciel est installé pour la première fois. Pour en savoir plus sur le processus, lisez Installer Login by Auth0.

Si l’assistant de configuration de la migration des utilisateurs n’a pas pu se terminer ou si vous souhaitez voir le processus plus en détail, suivez les étapes ci-dessous. Encore une fois, il s’agit de partir de zéro avec une connexion de base de données qui n’a pas d’utilisateurs. 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, et créez et activez une connexion de base de données vide pour l’application. Il peut s’agir des mêmes que celles créées dans le processus standard de l’assistant d’installation, ou vous pouvez les créer à partir de zéro. Pour en savoir plus sur l’assistant d’installation, lisez Installer la connexion par Auth0.

  2. Dans l’écran Auth0 > Paramètres de WordPress, assurez-vous que le domaine de l’application, l’ID et le secret client sont enregistrés dans les bons champs de l’onglet Basic.

  3. Dans la vue Avancé, activez le réglagePoints de terminaison de migration des utilisateurs et sélectionnez Enregistrer les modifications. Si vous utilisez des paramètres basés sur des constantes, définissez AUTH0_ENV_MIGRATION_WS sur true et AUTH0_ENV_MIGRATION_TOKEN sur une chaîne aléatoire sécurisée d’au moins 16 chiffres, sans guillemets simples ni barres obliques inverses.

  4. Dans les réglages, vous devriez maintenant voir un Jeton de sécurité. Gardez cette page ouverte, car vous aurez besoin de cette valeur plus tard dans le processus.

  5. Dans Auth0 Dashboard, accédez à la connexion de base de données que vous souhaitez utiliser et activez Nécessite le nom d’utilisateur et Importer les utilisateurs vers Auth0.

  6. Sélectionnez la vue Base de données personnalisée, et activez Utiliser ma propre base de données.

  7. Il devrait y avoir deux onglets en dessous de ce réglage sous Scripts d’action de base de données : un pour Login Connexion et un pour Obtenir l’utilisateur.

  8. Sélectionnez la vue Connexion, effacez le code existant, copiez le code db-login.js du dépôt GitHub, et collez-le dans l’éditeur de code.

  9. Cette étape concerne les versions 3.10.0 et antérieures : Cherchez {THE_WS_URL} et remplacez par l’URL du site de votre instance WordPress, suivie de /index.php?a0_action=migration-ws-login. L’URL du site se trouve dans l’écran Paramètres > Général de wp-admin. Vous pouvez tester ceci en collant l’URL complète du site dans votre navigateur. Vous devriez voir le code d’erreur suivant : {"status":401,"error":"Unauthorized"}.

  10. Cette étape concerne les versions 3.10.0 et antérieures : Cherchez le {THE_WS_TOKEN} et remplacez-le par le jeton qui apparaît sous le réglage Points de terminaison de migration de l’utilisateur.

  11. Il ne doit y avoir aucune erreur dans l’éditeur. Si tout semble correct, cliquez sur Enregistrer en haut.

  12. Cette étape concerne les versions 3.11.0 et ultérieures : Faites défiler vers les Paramètres et ajoutez les variables de configuration suivantes : - endpointUrl défini sur l’URL du site de l’instance WordPress (wp-admin > Paramètres > Général > champ "Site URL" ), suivi de /index.php?a0_action=. - migrationToken défini sur la valeur du jeton de sécurité de l’étape 4 ci-dessus. - userNamespace défini sur votre nom d’application dans Auth0 ou toute autre valeur comprenant uniquement des lettres, des chiffres et des tirets.

    WordPress Plugin custom database settings
  13. Cliquez sur le bouton Essayer en haut et utilisez un compte utilisateur WordPress valide dans le formulaire qui apparaît. Vous devriez voir apparaître le message « Le profil est », suivi des données de l’utilisateur. Si ce n’est pas le cas, lisez la section Dépannage ci-dessous.

  14. Sélectionnez la vue Obtenir l’utilisateur, effacez le code existant, copiez le code db-get-user.js du référentiel GitHub, et collez-le dans l’éditeur de code.

  15. Cette étape concerne les versions 3.10.0 et antérieures : Cherchez {THE_WS_URL} et remplacez-la 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 Paramètres > Général de wp-admin. Vous pouvez tester ceci en collant l’URL complète du site dans votre navigateur. Vous devriez voir le code d’erreur suivant : {"status":401,"error":"Unauthorized"}.

  16. Cette étape concerne les versions 3.10.0 antérieures : Cherchez {THE_WS_TOKEN} et remplacez-la par le jeton qui apparaît sous le réglage Points de terminaison de migration des utilisateurs.

  17. Il ne doit y avoir aucune erreur dans l’éditeur. Si tout semble correct, cliquez sur Enregistrer.

  18. Cliquez sur le bouton Essayer en haut et utilisez un courriel avec un compte utilisateur WordPress valide dans le formulaire qui apparaît. Vous devriez voir apparaître le message « Le profil est », suivi des données de l’utilisateur. Si ce n’est pas le cas, lisez la section Dépannage ci-dessous.

  19. Dans une nouvelle session de navigation, allez sur une page de connexion du site WordPress et essayez de vous connecter (l’utilisateur ne doit pas exister dans la base de données). Vous remarquerez que le processus de connexion prend un peu plus de temps que d’habitude au début, mais devrait aboutir. Les connexions suivantes seront plus rapides.

  20. (FACULTATIF) Pour activer une sécurité supplémentaire pour les points de terminaison de la migration, allez à l’écran Auth0 > Paramètres dans WordPress, activez, puis Enregistrer les modifications. Essayez de vous connecter avec un autre utilisateur pour vérifier qu’Auth0 peut bel et bien accéder aux points de terminaison.

À ce stade, la configuration de la migration des utilisateurs est terminée, et les utilisateurs existants de WordPress seront migrés vers la connexion à la base de données Auth0.

Dépannage

Les problèmes liés à la migration des utilisateurs proviennent généralement de plusieurs sources :

  • Une URL ou un jeton incorrect dans les scripts de la base de données personnalisée.

  • La liste d’adresses IP autorisées est active, mais contient des adresses IP incorrectes.

  • Points de terminaison restreints ou mis en cache sur votre instance WordPress.

La meilleure façon de commencer à résoudre le problème est d’utiliser le bouton Essayer pour le script Connexion qui se trouve dans la vue Base de données personnalisée de la connexion à la base de données utilisée dans Auth0 Dashboard > Authentification > Base de données. Voici les messages d’erreur que vous pourriez voir et les étapes à suivre pour y remédier.

Jeton inattendu < dans le JSON à la position 0

Cela signifie que le script personnalisé ne reçoit pas les données dans un format qu’il peut utiliser. Une URL de point de terminaison incorrect est probablement à l’origine de ce problème dans le script de la base de données.

Tout d’abord, copiez l’URL à la ligne 10 du script et collez-la dans votre navigateur. Si le point de terminaison est correct, il devrait afficher l’un des deux messages ci-dessous :

{"status":401,"error":"Unauthorized"}

// ou

{"status":403,"error":"Forbidden"}

Si ce que vous voyez est la page d’accueil ou une erreur 404, l’URL est incorrecte. Recherchez l’URL de votre site sous Paramètres > Général > URL du site dans la section administrateur 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 Obtenir l’utilisateur.

- Pour les versions 3.10.0 et précédentes : La valeur de l’URL devrait apparaître dans le script lui-même en tant que premier paramètre de l’appel request.post. - 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 Essayer pour voir la valeur qui est enregistrée pour endpointUrl :

callback(null, configuration);

Si vous êtes sûr que les URL sont correctes et que le problème persiste, vérifiez auprès de votre hébergeur que ces URL ne sont pas mises en cache ou restreintes de quelque manière que ce soit.

Mauvaise adresse électronique ou mauvais mot de passe

Il s’agit de l’erreur par défaut qui s’affiche en cas de problème. La façon la plus simple de résoudre ce problème est d’afficher temporairement l’erreur qui est renvoyée (ces erreurs sont opaques par défaut afin d’éviter d’afficher quoi que ce soit qui puisse donner aux attaquants une base de travail).

À la ligne 30 du script de connexion, remplacez :

callback(null);

par :

callback(wpUser.error);

Enregistrez le script et essayez à nouveau de vous connecter. Vous devriez voir l’un des messages suivants et être en mesure d’identifier le problème à l’aide des étapes ci-dessous. Une fois le problème résolu, rétablissez le script tel qu’il était.

Interdit

Cela signifie que les points de terminaison de la migration sont désactivés dans votre installation WordPress. Dans WordPress, allez dans Auth0 > Paramètres > Avancé et activez Points de terminaison de la migration des utilisateurs. Assurez-vous que le jeton qui apparaît est le même que celui utilisé pour les deux scripts de base de données personnalisés :

  • 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 Essayer pour voir la valeur enregistrée pour migrationToken :

callback(null, configuration);

Non autorisé

Cela signifie que la liste des IP autorisées pour la migration est activée, mais que l’adresse IP entrante ne figure pas sur la liste. Juste en dessous du script de connexion, vous devriez voir une liste d’adresses IP :

WordPress User Migration - Auth0 IP Addresses

Assurez-vous que toutes ces adresses IP apparaissent dans WordPress sous Auth0 > Paramètres > Avancé dans le plugiciel :

WordPress User Migration - IP Whitelist

Si une ou plusieurs des adresses IP listées dans Auth0 n’apparaissent pas dans WordPress, ajoutez les adresses manquantes dans le champ et sauvegardez la page de réglages. De plus, créez un message dans la communauté Auth0 (et marquez-le « wordpress ») qui contient les adresses IP manquantes, afin que nous puissions résoudre le problème.

Non autorisé : l’en-tête d’autorisation est manquante

Soit le jeton de sécurité est manquant dans le script de base de données (ligne 16), soit votre serveur ne traite pas correctement les en-têtes. Vérifiez le script de connexion et assurez-vous que le jeton existe et qu’il correspond à ce qui se trouve dans WordPress. Si le jeton est présent et correct, vous devrez alors contacter votre hébergeur afin que l’en-tête Authorization soit analysée. Pour obtenir de l’aide sur le dépannage du serveur, lisez Apache 2.4 + PHP-FPM and Authorization headers sur stackoverflow.com. Pour voir comment le jeton est récupéré, consultez le code du plugiciel dans le référentiel GitHub

Jeton non valide

Le jeton de sécurité dans le script de base de données n’est pas valide. Vérifiez la ligne 16 du script de connexion et assurez-vous que le jeton correspond à ce qui se trouve dans WordPress.

Identifiants invalides

L’adresse courriel et/ou le mot de passe utilisés sont incorrects. Veillez à saisir une adresse courriel et un mot de passe corrects. Vous pouvez réinitialiser le mot de passe de l’utilisateur pour vous assurer que vous avez le bon mot de passe.

Impossible de modifier l’adresse courriel, ou les données de l’utilisateur sont incorrectes

Si vous utilisez plus d’une connexion de base de données personnalisée dans votre locataire Auth0 et que vous n’arrivez pas à changer l’adresse courriel ou que vous obtenez des données d’utilisateur stockées pour le mauvais utilisateur, il est probable que vous avez des identifiants d’utilisateur qui 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 avant cette date, il devra être corrigé manuellement en procédant de l’une des manières suivantes :

  • Si vous n’avez pas de données utilisateur stockées qui doivent être conservées (si vous n’utilisez la connexion que pour la connexion et que vous ne stockez pas de métadonnées), vous pouvez créer une nouvelle connexion de base de données personnalisée en suivant les étapes ci-dessus (en utilisant les instructions pour la version 3.11.0) et basculer l’application vers cette nouvelle connexion (assurez-vous de désactiver l’ancienne connexion). La migration sera redémarrée et il n’y aura pas d’impact sur l’expérience de l’utilisateur.

  • Si vous avez des données dans Auth0 qui doivent être conservées, vous pouvez utiliser notre extension Importation/Exportation des utilisateurs pour ajuster les données de l’utilisateur. 1. Créez une nouvelle connexion de base de données personnalisée en suivant les étapes ci-dessus (en utilisant les instructions pour la version 3.11.0). 2. Exportez tous les utilisateurs de la connexion existante (nous vous recommandons de mettre votre site en mode maintenance entretien pendant le basculement, afin qu’il ne manque aucun utilisateur suite à l’importation/exportation). . 3. Modifiez tous les identifiants des utilisateurs pour ajouter l’espace de noms utilisé lors de la création de la nouvelle connexion. Les identifiants d’utilisateurs devraient passer de auth0|123 à auth0|Votre-nom-de-site-WP|123. Ajustez tous les autres champs dont vous avez besoin pour suivre le schéma d’importation. Pour en savoir plus, lisez Importation d’utilisateurs en lots, schéma de base de données et exemples. 4. Activez la nouvelle connexion et désactivez l’ancienne pour votre application. 5. Importez les nouvelles données utilisateur dans la nouvelle connexion et testez.

  • Si vous disposez d’un compte payant, vous pouvez communiquer avec notre équipe de support pour exécuter un script de mise à jour de la base de données afin de modifier les identifiants utilisateur vers une version à espace de noms et ajouter l’espace de noms à votre script de base de données en même temps (étape 12 dans Mise en place et configuration ci-dessus).