通过 SSO 自动登录

我的 SSO 已经部署并正常运行,一切顺利。不过,我希望当用户访问我们的 Discourse 社区时,如果他们已经登录了主网站,能够自动完成登录。具体来说,就是点击“登录”按钮来启动 SSO 流程,然后将他们重新引导回他们原本所在的 Discourse 页面。

我刚开始查看登录相关的代码,但希望有人能提供一些见解,说明如何从自定义主题组件中触发登录流程。

这可以实现,但如果 SSO 配置错误,可能会导致无法登录到 SSO 提供商网站。更安全的做法是在网站上添加一个 SSO 登录链接,用户点击该链接时会自动登录 Discourse 并跳转到指定页面。详见:https://meta.discourse.org/t/create-an-sso-login-link/109290。

能否详细说明一下我可能会遇到哪些问题?

在我的具体情况下,用户不会首先访问主应用——在特定会话中。他们将访问社区网站,但此前已在某个时间点登录过主应用。我希望能够自动拉取登录会话,而无需任何用户交互。

我在尝试从 WordPress 将用户登录到 Discourse 时遇到了这个问题,具体做法是在 WordPress 登录过程中静默将用户重定向到 Discourse,然后再将他们重定向回 WordPress。如果 SSO 配置不当,用户可能会被锁定在 WordPress 之外。

如果您确实想尝试这种方案,则需要在 Discourse 上启用“允许所有返回路径”的 SSO 设置。启用后,您可以将用户重定向到以下地址:

https://discourse.example.com/session/sso?return_path=path_back_to_your_sso_provider_site