Discourse SSO Provider ne redirige pas vers return_sso_url lorsque l'utilisateur se connecte avec un SSO personnalisé

À ma connaissance, le même problème a été mentionné à deux reprises et aurait été corrigé en 2018 (Discourse doesn't redirect to return_sso_url after user logs in on private site) et en 2015 (Login redirect during sso provider login). Cependant, je rencontre toujours le même problème.

Nous avons installé Discourse au sein de notre organisation. Nous disposons de notre propre base de données de comptes utilisateurs, nous utilisons donc notre site web de connexion SSO personnalisé pour permettre aux utilisateurs de se connecter à Discourse, en suivant les instructions disponibles sur Setup DiscourseConnect - Official Single-Sign-On for Discourse (sso). Cela fonctionne bien.

Ensuite, nous avons également WordPress, Rocket Chat et une application web Tornado personnalisée. Ces services dépendent de Discourse en tant que fournisseur d’authentification SSO.

Pour WordPress, nous utilisons wp-discourse. Pour Rocket Chat et l’application web Tornado, nous avons suivi les instructions de Use Discourse as an identity provider (SSO, DiscourseConnect).

Le flux de connexion fonctionnait correctement si l’utilisateur était déjà connecté à Discourse. Cependant, si l’utilisateur n’était pas encore connecté à Discourse, aucun des flux de connexion des services (par exemple WordPress, Rocket Chat ou l’application web Tornado) ne fonctionnait correctement. Lorsqu’un utilisateur tente de se connecter à WordPress, Rocket Chat ou à l’application web Tornado, il est redirigé vers discourse.com/login. Ensuite, l’utilisateur clique sur le bouton de connexion, ce qui le redirige vers notre site SSO personnalisé. Là, il effectue une connexion, après quoi il est redirigé vers discourse.com, mais pas vers le service souhaité (par exemple WordPress, Rocket Chat ou l’application web Tornado).

Juste une petite digression, la fonction de déconnexion synchronisée avec Discourse de wp-discourse ne fonctionne pas. Lorsqu’un utilisateur se déconnecte de WordPress, il reste connecté à Discourse.

Je rencontre ce problème depuis plusieurs mois, malgré plusieurs mises à jour de Discourse. Je cherche maintenant de l’aide. Veuillez me faire savoir si des détails supplémentaires sont nécessaires.

Ma solution de contournement actuelle consiste à rediriger l’utilisateur vers /session/sso?return_path=customurl au lieu de /session/sso_provider. L’inconvénient est que cela demande toujours à l’utilisateur de se connecter, même s’il est déjà connecté à Discourse.

Pendant la connexion SSO personnalisée, l’application de connexion a effectivement lu et extrait return_sso_url à partir du cookie sso_payload. Ce return_sso_url est intégré dans la charge utile sso à envoyer vers /session/sso_login?. J’ai pu constater dans les journaux (/logs) que return_sso_url était correctement défini, mais la redirection n’a pas été observée. Ci-dessous, je copie les journaux :

add_groups:
admin:
modérateur:
avatar_force_update:
avatar_url:
bio:
card_background_url:
email: xxx@xxx
external_id: 42
groups:
locale:
locale_force_update:
logout:
name: xxx
nonce: b4c758723a8abf665b079dc41a585dbc
profile_background_url:
remove_groups:
require_activation:
return_sso_url: https://customurl
suppress_welcome_message:
title:
username: xxx
website:
location:

@cylau1996 as-tu trouvé une solution ?

Une solution pour cela ?