Problèmes de redirection SSO

J’intègre Discourse avec Wordpress via le plugin WP Discourse et j’utilise Wordpress comme fournisseur de Discourse Connect. Cependant, je rencontre un problème où un utilisateur non authentifié visitant l’instance Discourse et cliquant sur n’importe quel bouton nécessitant une connexion se retrouve dans une boucle de redirection infinie.

Le comportement souhaité est : l’utilisateur clique sur le bouton de connexion Discourse → l’utilisateur est redirigé vers la page de connexion Wordpress → l’utilisateur s’authentifie et est redirigé vers la page Discourse sur laquelle il se trouvait auparavant. Actuellement, il n’y a aucun problème si un utilisateur est déjà authentifié et visite l’instance Discourse après avoir été authentifié. Cette erreur apparaît lorsqu’un utilisateur non authentifié visite d’abord l’instance Discourse.

Le comportement actuel est : l’utilisateur clique sur un bouton de connexion Discourse l’utilisateur est redirigé vers https://[discourse-instance]/session/sso?return_path=%2Ft%2F[page Discourse sur laquelle l’utilisateur se trouvait auparavant]%2F16 → l’utilisateur est redirigé vers https://[wordpress-site]/?sso=[SSO token]%3D%3D\u0026sig=[Signature token] → l’utilisateur est redirigé vers https://[wordpress-site]/?sso=[SSO token]%3D%3D\u0026sig=[Signature token]\u0026redirect_to=%2F%3Fsso%[SSO token]%253D%253D%26sig%3D[Signature token] → et le cycle continue récursivement jusqu’à ce que le navigateur affiche une erreur « trop de redirections ».

Je n’ai pas trouvé de fil de discussion avec une solution pour cela, le plus proche est

mais nous avons le SSL activé partout et ce problème se produit sur tous les navigateurs. Des suggestions sur la façon de résoudre ce problème ?

Chrome 97 a été livré avec un bug lié à la gestion des cookies lors des redirections, qui est connu pour casser DiscourseConnect dans certaines circonstances. En attendant que Google déploie un correctif, nous avons ajouté une solution de contournement à Discourse. La mise à niveau de votre site Discourse vers la dernière version devrait résoudre le problème. Pouvez-vous essayer et nous faire savoir si cela fonctionne ?

(La solution de contournement a été ajoutée dans ce commit)

3 « J'aime »

Merci pour votre réponse, j’ai vérifié pour m’assurer que nous utilisons la dernière version, mais malheureusement l’erreur est toujours là. Nous hébergeons notre forum avec Discourse, il devrait donc se mettre à jour régulièrement. L’erreur est toujours la même qu’auparavant, y a-t-il autre chose que je devrais essayer ? Y a-t-il des paramètres dans l’hébergement Discourse qui pourraient en être la cause ?

1 « J'aime »

Salut @dbwhite, pourriez-vous s’il vous plaît

  1. activer les « Journaux DiscourseConnect détaillés » dans les paramètres « DiscourseConnect » de WP Discourse
  2. recréer le problème
  3. aller dans « Journaux » dans WP Discourse et les « Télécharger »

Ensuite, envoyez-moi les journaux par message privé et j’examinerai de plus près ce qui se passe. Notez que les journaux ne contiennent aucune information personnelle identifiable ni aucun secret.

2 « J'aime »

@angus, @dbwhite une cause possible du problème pourrait être si le site WordPress utilise Woocommerce. Woocommerce ajoute une redirection de connexion qui peut causer des problèmes avec DiscourseConnect. Ces redirections peuvent être remplacées en installant et en activant GitHub - scossar/wp-discourse-woocommerce-support: Integrates the wp-discourse plugin with WooCommerce, ou en ajoutant les extraits de code fournis dans le fichier readme de ce plugin au thème du site.

Le problème de redirection décrit ici semble similaire à ce que j’ai vu avec d’autres sites Woocommerce par le passé. Dans ces cas, il a été résolu en installant le plugin WordPress auquel j’ai lié.

Si c’est la cause du problème, je me demande si nous devrions envisager d’ajouter directement le support de Woocommerce au plugin WP Discourse.

4 « J'aime »

Ce serait extrêmement utile.

Je n’ai pas exactement le problème que l’OP a décrit, mais je me heurte à un mur pour rediriger nos utilisateurs vers l’endroit où ils se trouvaient, dans les forums Discourse, après la connexion :disappointed_face:

L’installation et l’activation du plugin WP Discourse WooCommerce Support résolvent-elles le problème pour vous ?

Je voulais juste poster une mise à jour ici, il s’avère qu’un des plugins que nous utilisions interfère avec la valeur de retour de la fonction wp_login_url() de Wordpress. Une fois ce plugin supprimé, tout a fonctionné comme prévu !

1 « J'aime »

Une publication a été divisée en un nouveau sujet : Erreur Rails lors de l’utilisation de DiscourseConnect et Wordpress