Configurer l'authentification unique (SSO) avec WP Discourse et DiscourseConnect

Le plugin WP Discourse vous permet de configurer DiscourseConnect dans WordPress afin que vos utilisateurs puissent utiliser leur compte WordPress pour se connecter à Discourse, ou leur compte Discourse pour se connecter à WordPress. Avant de pouvoir configurer DiscourseConnect, vous devez d’abord installer le plugin WP Discourse sur WordPress et le connecter à votre instance Discourse. Si vous êtes prêt à commencer, regardez cette courte vidéo ou suivez les instructions ci-dessous.

Étape suivante

Une fois DiscourseConnect configuré, vous voudrez peut-être consulter les sujets suivants :


Instructions

Définition d’une clé secrète

Que vous configuriez WP Discourse en tant que fournisseur ou client DiscourseConnect, vous devez définir une clé secrète. Allez dans l’onglet « Clé secrète DiscourseConnect » et saisissez une chaîne de texte (chiffres, lettres et symboles sont autorisés), d’au moins 10 caractères. Appliquez les mêmes règles que pour créer un mot de passe fort. Assurez-vous de la sauvegarder une fois terminée.

Ensuite, ouvrez les paramètres de votre site Discourse (dans le panneau d’administration) et recherchez « discourse connect ». L’un des paramètres situés en haut sera discourse connect secret. Collez la clé secrète que vous avez définie dans WP Discourse et cliquez sur la coche verte.

Connexion à Discourse avec WordPress (Fournisseur DiscourseConnect)

Assurez-vous que votre WP Discourse est connecté à votre instance Discourse et que votre clé secrète est définie ( :point_up: ) avant de suivre ces instructions.

Pour permettre à vos utilisateurs de se connecter à Discourse en utilisant leurs identifiants WordPress, vous devez configurer WP Discourse en tant que fournisseur DiscourseConnect. Allez dans l’onglet Fournisseur DiscourseConnect dans les paramètres de WP Discourse, cochez la case Activer le fournisseur DiscourseConnect et enregistrez vos paramètres.

Ensuite, allez dans les paramètres de votre site Discourse et saisissez « discourse connect » dans la zone de recherche pour afficher tous vos paramètres DiscourseConnect. Tout d’abord, définissez l’URL discourse connect url sur l’URL de votre site WordPress. La dernière étape consiste à sélectionner activer discourse connect. Assurez-vous d’être prêt avant de le faire, car une fois activé, vos utilisateurs ne pourront se connecter à Discourse qu’en utilisant WordPress.

Une fois DiscourseConnect activé dans Discourse, pour vérifier que tout est correctement configuré, ouvrez une fenêtre de navigation privée dans votre navigateur. Gardez votre fenêtre de navigateur normale (non privée) connectée à un compte administrateur (au cas où quelque chose irait mal et que vous devriez rétablir les paramètres). Dans la fenêtre privée, vous remarquerez que le bouton « S’inscrire » de Discourse n’apparaît plus. Cliquez sur le bouton « Se connecter ». Vous devriez voir un écran de connexion WordPress. Saisissez vos identifiants WordPress pour vous connecter. Vous devriez ensuite être redirigé vers Discourse et être connecté.

Si quelque chose se passe mal, ou si vous remarquez que quelque chose n’est pas tout à fait correct, revenez à votre fenêtre de navigateur normale et désactivez activer discourse connect pour permettre à vos utilisateurs de se connecter normalement à Discourse. Si vous n’êtes plus connecté à votre compte administrateur dans votre fenêtre de navigateur normale pour une raison quelconque, consultez la section « Désactiver DiscourseConnect via la console Discourse » dans le dépannage ci-dessous pour retrouver l’accès à votre instance Discourse.

Vérification des e-mails

Discourse s’attend à ce que toutes les adresses e-mail des utilisateurs soient vérifiées, tandis que WordPress ne force pas les utilisateurs à vérifier leur adresse e-mail. Dans une configuration WordPress par défaut, il est assez facile de vérifier l’adresse e-mail d’un utilisateur lors du processus d’inscription, mais si un site utilise un plugin qui crée un formulaire d’inscription côté front-end – par exemple, le formulaire d’inscription qui peut être ajouté avec WooCommerce – le plugin WP Discourse ne peut pas vérifier l’adresse e-mail de l’utilisateur.

Si les adresses e-mail des utilisateurs ne sont pas vérifiées dans WordPress, avant qu’un utilisateur WordPress ne puisse se connecter au forum, il devra répondre à un avis de vérification d’e-mail envoyé par Discourse. Le plugin dispose de plusieurs filtres qui peuvent être utilisés pour outrepasser ce comportement. Consultez le code, en commençant ici, pour plus de détails.

Suppression du drapeau require_activation

Si vous êtes certain que WordPress authentifie les adresses e-mail, vous pouvez indiquer à Discourse qu’il n’en a pas besoin. Pour supprimer complètement le drapeau require_activation, ajoutez quelque chose comme ceci à votre WordPress (par exemple, dans le fichier functions.php de votre thème) :

// Remplacez 'my_prefix' par le préfixe de votre site.

add_filter( 'discourse_email_verification', 'my_prefix_discourse_email_verification' );
function my_prefix_discourse_email_verification( $require_activation ) {
    return false;
}

Pour supprimer le drapeau require_activation pour des utilisateurs spécifiques, utilisez quelque chose comme ceci :

// Remplacez 'my_prefix' par le préfixe de votre site.

add_filter( 'discourse_email_verification', 'my_prefix_discourse_email_verification', 10, 2 );
function my_prefix_discourse_email_verification( $require_activation, $user_id ) {
    $user = get_userdata( $user_id );
    if ( /* une condition testée contre $user */ ) {

        return true;
    }

    return false;
}

Webhook des données utilisateur

Ce webhook existe pour des raisons historiques – le remplissage automatique du champ Nom Discourse peut désormais être réalisé en utilisant l’option « Créer ou synchroniser les utilisateurs Discourse lors de la connexion » du fournisseur DiscourseConnect.

Le webhook Mettre à jour les données utilisateur (dans le panneau de paramètres « Webhooks ») peut être utilisé lorsque WordPress est le fournisseur DiscourseConnect pour votre instance Discourse. Le webhook remplit automatiquement le champ Nom Discourse de l’utilisateur dans WordPress.

Création d’un lien de connexion DiscourseConnect

Si vous avez activé l’option Fournisseur DiscourseConnect, vous pouvez ajouter un lien de connexion DiscourseConnect à votre site WordPress en créant un lien avec la structure suivante :

<a href="https://discourse.example.com/session/sso?return_path=/">Communauté</a>

Définissez la valeur de return_path sur la page de votre forum où vous souhaitez que l’utilisateur atterrisse. Vous pouvez ajouter un lien de connexion SSO à un menu WordPress en ajoutant une URL avec cette structure en tant que lien personnalisé dans la section Menus du tableau de bord WordPress.

Connexion à WordPress avec Discourse (Client DiscourseConnect)

Pour activer votre site en tant que client DiscourseConnect pour Discourse, cliquez sur l’onglet Client DiscourseConnect. Sur cette page, sélectionnez les options Activer le client DiscourseConnect et Ajouter un lien de connexion.

Allez maintenant sur la page d’administration/paramètres de Discourse et recherchez « discourse connect » pour afficher toutes vos options DiscourseConnect.

  • sélectionnez le paramètre « activer le fournisseur discourse connect »
  • copiez votre Clé secrète DiscourseConnect de WordPress dans le champ « secret » du paramètre « secrets du fournisseur discourse connect » de Discourse. Dans le champ « domaine » de ce paramètre, saisissez le domaine de votre site WordPress. Cliquez ensuite sur la coche verte pour enregistrer vos paramètres.

Une fois terminé, le paramètre « secrets du fournisseur discourse connect » sur Discourse devrait ressembler à ceci (avec le domaine défini sur le domaine de votre WordPress) :

Discourse devrait maintenant fonctionner en tant que fournisseur DiscourseConnect pour votre site WordPress.

Ouvrez votre site WordPress dans une fenêtre de navigation privée dans votre navigateur. Lorsque vous accédez maintenant à votre page de connexion, vous devriez voir un lien « Se connecter avec Discourse » sous le formulaire de connexion. Cliquez dessus et vous serez redirigé vers le formulaire de connexion Discourse. Connectez-vous là-bas, et vous serez redirigé vers la page de connexion WordPress avec un message indiquant que vous devez synchroniser votre compte avec Discourse. Suivez les instructions du message pour lier vos comptes, et vous devriez maintenant pouvoir vous connecter à votre site WordPress via Discourse.

Remarque : ce comportement n’affecte que les utilisateurs qui ont des comptes existants à la fois sur WordPress et Discourse. Les nouveaux comptes WordPress créés via DiscourseConnect pourront se connecter librement à WordPress la première fois qu’ils cliqueront sur le lien « Se connecter avec Discourse ». Pour faciliter la connexion via Discourse pour les utilisateurs ayant des comptes existants à la fois sur votre site WordPress et votre forum Discourse, cochez la case Synchroniser les utilisateurs existants par e-mail dans l’onglet des options Client DiscourseConnect.

Synchronisation de la déconnexion Discourse

Lorsque DiscourseConnect est activé, la déconnexion de Discourse peut être synchronisée avec votre site WordPress en ajoutant l’URL home_url de votre site avec le paramètre de requête request=logout au paramètre de site Discourse redirection de déconnexion. Ce paramètre se trouve dans la section des paramètres de Discourse à /admin/site_settings/category/users. Voici un exemple d’URL de « redirection de déconnexion » :

http://example.com/?request=logout

Dépannage

Si vous rencontrez des problèmes avec l’utilisation de WordPress en tant que fournisseur DiscourseConnect pour votre forum, les premières choses à vérifier sont :

  • que les clés secrètes DiscourseConnect définies sur WordPress et Discourse sont identiques
  • que vous avez sélectionné Activer le fournisseur DiscourseConnect sur votre site WordPress
  • que vous avez saisi la bonne URL discourse connect url sur Discourse.

« Erreur de connexion » lors de l’utilisation de DiscourseConnect

Si les utilisateurs reçoivent un message « Erreur de connexion » lorsqu’ils tentent de se connecter à Discourse, veuillez consulter :

Debug and fixing common DiscourseConnect issues.

Désactivation de DiscourseConnect

Si DiscourseConnect ne fonctionne pas pour vous, vous pouvez le désactiver en désactivant le paramètre de site activer discourse connect. Si vous n’êtes toujours pas connecté à un compte administrateur quelque part pour le désactiver, ne vous inquiétez pas, il existe plusieurs façons de revenir en arrière pour le désactiver.

Connexion via /users/admin-login

Ouvrez une nouvelle fenêtre de navigateur et saisissez l’URL de votre forum dans la barre d’URL, suivie de /users/admin-login, par exemple :

https://community.mysite.com/users/admin-login

Vous devriez voir un champ vous demandant votre e-mail d’administrateur. Après avoir soumis votre e-mail, vous recevrez un e-mail contenant un lien qui vous permettra de vous connecter directement à votre compte administrateur. Vous pourrez ensuite accéder aux paramètres de votre site et désactiver activer discourse connect pour désactiver DiscourseConnect.

Si cela ne fonctionne pas pour une raison quelconque, ne vous inquiétez pas, vous pouvez toujours désactiver DiscourseConnect via la console de votre serveur (:point_down:)

Désactivation de DiscourseConnect via la console du serveur

Si vous ne savez pas ce qu’est la console du serveur, ou si vous n’y avez pas accès, contactez votre hébergeur pour obtenir de l’aide. Après vous être connecté à votre serveur via SSH, les commandes à exécuter sont les suivantes :

cd /var/discourse
./launcher enter app
rails c
SiteSetting.enable_discourse_connect=false
exit
exit
11 « J'aime »

Et si je n’ai pas ces options dans mon Discourse ? :confused:

Salut @LosHunterros, bienvenue sur Meta !

Discourse Connect n’est pas inclus dans le plan d’hébergement de base
Screenshot_20240507_204846_Chrome

4 « J'aime »

Merci pour votre réponse

1 « J'aime »

J’ai maintenant besoin d’un niveau 101. Ou un simple oui ou non.

J’ai besoin d’un accès facile depuis WordPress à mon forum pour ces clients. Parce qu’ils ont créé un compte dans WordPress, je l’utiliserais comme fournisseur.

Mais j’ai maintenant des problèmes avec l’IA de Discourse. J’ai compris que DiscourseConnect détournerait toutes les autres connexions, comme Google, Microsoft et locales. Mais l’IA est vraiment fermement convaincue que ce n’est pas vrai, si je configure discourse connect allowed redirect domains.

Eh bien, je l’ai fait. Et la redirection vers Wordpress se produit toujours sans aucune autre option de connexion.

Alors, ai-je perdu deux heures de ma vie à cause d’une hallucination d’une IA, ou ai-je fait quelque chose de mal ? Parce que si j’avais raison au début et que DiscourseConnect ne permet pas d’autres connexions, je le retire immédiatement. Vivre sans connexion Google n’est pas une option dans ce coin de l’Europe.

Votre première pensée était la bonne. L’IA a tort : Voir plus loin.

Malheureusement, oui.

1 « J'aime »

J’ai suivi le guide d’installation jusqu’au point où l’authentification unique (SSO) devrait fonctionner. Lorsque je visite mon site Discourse dans une fenêtre de navigation privée, je suis immédiatement redirigé vers la page d’accueil de mon site WordPress avec une longue chaîne de requête dans l’URL et aucune option de connexion visible.

Est-ce le comportement attendu à ce stade ?
Dois-je maintenant simplement terminer la construction du côté WordPress (connexion/inscription, etc.), ou ai-je mal configuré quelque chose ?

Salut Mike, bienvenue. Tu devrais être redirigé vers la page de connexion standard de Wordpress. La première chose qui me vient à l’esprit est que ton thème (ou un plugin) fournit une page de connexion personnalisée. À quoi ressemble normalement ta page de connexion ?

Salut Angus, merci ! :slight_smile:

Ceci est une nouvelle installation de WordPress et de Discourse, avec le thème Twenty Twenty-Five actif. J’ai suivi vos instructions vidéo étape par étape, mais lorsque j’accède à Discourse dans une fenêtre de navigation privée, il redirige vers le site WordPress et arrive sur la page d’accueil du thème, et non sur un écran de connexion.

Le site WordPress est actuellement protégé par une confidentialité de répertoire car il se trouve dans un environnement de développement – cela pourrait-il affecter la redirection vers la page de connexion normale ?

Salut Mike, voici une petite vidéo que je viens d’enregistrer montrant une installation fonctionnelle sur le code actuel.

Vérifie simplement ta configuration par rapport à ce que je montre dans la vidéo et si tu es sûr de l’avoir configurée de la même manière et que cela ne fonctionne toujours pas, nous passerons par un processus d’élimination pour voir si nous pouvons déterminer pourquoi.

1 « J'aime »

Salut Angis,

Merci beaucoup d’avoir réalisé cette vidéo, excellent support !

J’ai fourni des captures d’écran de chaque section (avec les informations sensibles floutées)

image

image

image

Sur celle du dessus, ce n’était pas réellement sélectionné (oups) mais, lorsque je visite le forum sur un navigateur incognito, il redirige maintenant automatiquement vers /wp-login.php - je n’ai pas l’affichage du forum et du bouton de connexion comme vous.

image

Je ne suis pas trop gêné qu’il aille directement à la page wp-login maintenant, mais avoir un accès visuel direct au forum est toujours un plus !

@angus J’ai trouvé… Pendant le « qu’est-ce que je fais » initial, j’ai verrouillé la communauté avec ceci ;

image

Veuillez m’excuser d’avoir été un PITA, c’est le mode de démarrage :dashing_away:.

Merci encore pour l’excellent soutien - je suis sûr que je reviendrai.

2 « J'aime »

Content d’avoir compris !

Bonjour Angus, je me demande si vous pouvez m’aider avec ce problème que j’ai, je n’ai eu aucune réponse à mon sujet :

En gros, si j’anonymise un utilisateur, le plugin SSO lui crée simplement un nouveau compte. Y a-t-il un moyen de désactiver les utilisateurs individuellement pour empêcher la création de nouveaux comptes pour eux, et cela peut-il se synchroniser automatiquement lorsque je bannis ou anonymise quelqu’un ?

Peut-être anonymiser l’utilisateur puis faire en sorte que son adresse e-mail soit celle du SSO. Ou faire en sorte que WordPress refuse l’utilisateur (cela semble être la vraie solution - WordPress devrait refuser l’utilisateur)

Comment puis-je empêcher WordPress d’autoriser l’utilisateur à se connecter via SSO ? C’est la solution que je pense.

C’est une question WordPress. :wink:

J’ai utilisé Internet et il semble que vous puissiez changer leur rôle en “aucun rôle sur ce site”.

Ah, ce que je voulais dire, c’est que je veux que l’utilisateur puisse continuer à utiliser le site web mais ne puisse pas créer de compte sur le forum.

Notre forum est séparé du site web, donc certaines personnes bannies de la communauté pour comportement perturbateur devraient toujours pouvoir utiliser le site web qui est un outil SaaS.

Je pense alors que vous devrez les suspendre dans Discourse. Si vous avez besoin d’anonymiser leur contenu, vous devrez le faire, puis créer le compte qui est suspendu.

Salut @Shauny J’ai répondu à votre publication de support originale :

1 « J'aime »