Nous exploitons une suite de services destinée à une communauté fermée spécifique et nous envisageons d’intégrer Discourse comme plateforme sociale. Je me demande quelle est la meilleure et la plus élégante solution (d’un point de vue technique) pour intégrer de manière transparente une instance Discourse à notre suite.
Pour illustrer, notre suite comprend le service A et le service B (que nous avons développés en interne), ainsi qu’un service SSO OAuth2.
Si un utilisateur clique sur « Se connecter » dans le service A ou le service B, il est redirigé vers le service SSO où il s’authentifie, puis est renvoyé comme d’habitude. Toutefois, grâce aux cookies et au contrôle de session, se connecter au service A ne nécessite pas de se reconnecter au service B si l’utilisateur décide de le visiter ensuite (il dispose déjà d’une session).
De même, nous souhaitons permettre aux utilisateurs de naviguer de manière transparente vers le service Discourse depuis le service A ou le B après s’être connectés via le service SSO. Supposons que l’entrée de l’utilisateur existe dans tous les services. Actuellement, le plugin OAuth2 de Discourse a été évalué et fonctionne avec notre service SSO, mais il oblige les utilisateurs à cliquer à nouveau sur « Se connecter avec SSO » lorsqu’ils visitent Discourse. Existe-t-il un moyen, par exemple via un appel API, d’initialiser automatiquement une session avec Discourse également lorsque les utilisateurs se connectent via le SSO commun depuis le service A ou le B ?
De plus, la question ci-dessus s’étend également à l’intégration des commentaires via le composant intégré. Le maintien d’un service Discourse « public » ne pose aucun problème pour la section des commentaires, et ceux-ci sont correctement intégrés. Cependant, si nous exécutons un service Discourse privé, la fenêtre des commentaires intégrée n’affichera pas correctement les commentaires si l’utilisateur ne s’est pas également connecté à Discourse au préalable, ce qui constitue un problème dans le cadre d’une intégration transparente.
Existe-t-il une solution de contournement pour ces problèmes ? J’envisageais de développer un plugin intermédiaire qui décoderait un jeton ou un cookie et authentifierait instantanément l’utilisateur approprié avant d’effectuer l’appel réel. Existe-t-il un plugin existant pour cela ?
Merci pour votre réponse rapide. Cependant, cela ne résout pas le problème. Que ce soit dans la fenêtre de commentaires Discourse intégrée ou en accédant directement au site Discourse, l’utilisateur (déjà connecté, par exemple, au « service A » via SSO) doit se reconnecter.
Dans les deux cas, je reçois un message de bienvenue : « Bienvenue. Un compte est requis. Veuillez demander une invitation à un membre existant ou vous connecter pour continuer. » ainsi que le bouton de connexion. Lorsque je clique dessus, une fenêtre de connexion s’ouvre et je suis invité à me connecter via nom d’utilisateur/mot de passe ou via SSO OAuth. Je n’ai pas besoin de saisir à nouveau le nom d’utilisateur et le mot de passe de mon SSO car la session SSO est toujours active, mais je ne souhaite pas que les utilisateurs vivent cette expérience. Lorsque l’utilisateur se connecte au « service A », il doit être automatiquement connecté à Discourse également, sans avoir à appuyer à nouveau sur le bouton « Se connecter ».
Que faut-il faire pour y parvenir ?
J’utilise la version 2.5.2 de Discourse, si cela est pertinent.
Sur la dernière version de Discourse, à condition que les options « connexion requise » et « authentification immédiate » soient activées, l’utilisateur sera automatiquement connecté à Discourse tant qu’il possède déjà un cookie valide auprès du fournisseur d’identité.
Sur les versions antérieures à la dernière, ce flux de connexion « magique » était limité aux sites utilisant notre propre protocole SSO, décrit dans Connexion unique officielle pour Discourse (sso).
Je vous suggère de mettre à jour vers la dernière version.
Hmm, j’utilise des images Bitnami et leur dernière version est toujours la 2.5.2, donc je devrai probablement attendre un peu (ou trouver un moyen de faire une mise à jour manuelle, ou utiliser une autre image).
Quoi qu’il en soit, merci de m’avoir orienté dans la bonne direction. C’est très apprécié !
Gardez à l’esprit que les images Bitnami ne sont pas prises en charge par les développeurs de Discourse et ont, au fil des ans, présenté de nombreuses incompatibilités avec l’utilisation normale du logiciel. Je recommande vivement d’utiliser une installation standard officielle de Discourse.