使用Discourse的SSO登录

我已经阅读了 Discourse Connect SSO 文章 (Setup DiscourseConnect - Official Single-Sign-On for Discourse (sso))。

我的理解是,我们可以让 Discourse 使用我们的 API 来验证身份验证,并且还可以发送一些自定义参数。如果我错了,请纠正我。

我们想要的是,我们想使用自己的登录页面(当用户点击 discourse.open…com 上的登录时,我们的登录页面“kan.open..com”应该会打开)。登录成功后,它应该跳转到 Discourse 站点。我们看到像 Twitter 或 Atlassian 等网站也在这样做。您能否提供更多关于如何实现这一目标的详细信息?

这是正确的,如果“使用我们的 API”是指“我们将修改我们的 API 以支持 Discourse Connect”。您如何做到这一点,其详细信息在您链接的文档中。如果您希望每个人都立即重定向,而不是在您的论坛上看到任何内容,您需要启用“需要登录”站点设置。

您好,Discourse 社区:

我有一个关于 Discourse SSODiscourseConnect)设置的问题。在 Discourse 调用 DiscourseConnect URL 时,是否有办法在请求中包含其他参数?具体来说,我想将用户数据(例如用户令牌或用户 ID)传递到 DiscourseConnect URL 的请求中,以便我可以使用这些数据进行身份验证并完成 SSO 登录过程。

我目前面临的挑战是,用户需要登录两次——一次登录到我的项目,另一次登录到 Discourse——当通过 SSO 连接时。理想情况下,我希望简化流程,以便如果用户已登录到我的项目,他们就不必在我的项目上使用相同的凭据再次登录。

Discourse 中是否有此功能的特性或任何最佳实践?我将不胜感激任何有关使 SSO 体验更顺畅的指导或建议。

谢谢!

处理这种情况的一种方法概述在此主题的“为已认证用户简化流程”部分:Create a DiscourseConnect login link

2 个赞

我第一次使用 Discourse 执行 SSO 登录时,我想知道是否有任何 API 或方法可以提供用户数据,例如用户 ID 或令牌,我可以将其发送到 Discourse API。作为回报,Discourse 会将该数据(如用户 ID 或令牌)包含在 Discourse Connect URL 请求中。

您可以使用您在 DiscourseConnect 有效负载中设置的 external_id 向 Discourse 发出 API 请求。该请求将返回完整的用户对象。

1 个赞

您没有理解我想表达的意思。我不是在询问登录后从 Discourse 中检索用户详细信息。请理解我试图实现的完整流程,并告知我这是否可以通过 Discourse 实现,或者我是否应该继续采用自己的方法。

目前,我有一个使用 Laravel 框架构建的项目,我想让用户能够访问 Discourse 论坛以获取反馈。我已经决定为 Discourse 实现 SSO 登录。我创建了一个 Discourse 管理员帐户,并启用了必要的 SSO 登录设置,包括启用 SSO、设置重定向 URL 和配置密钥。

现在,我在我的项目中添加了一个“Discourse Connect”按钮。我希望当用户点击此按钮时,他们可以使用我的凭据注册或登录,并自动登录到 Discourse。当用户点击“Discourse Connect”按钮时,我会将他们重定向到我的基本社区 URL 和 session/sso 端点,然后该端点会重定向回我的 Discourse Connect URL。我收到了 SSO 和 sig 参数的请求,我理解这些参数用于验证。但是,我需要 user_id 或某个标识符来从我的数据库中检索用户数据,以便进行验证、身份验证并将用户登录到 Discourse。

我的问题是:Discourse 是否有任何 API 或机制可以在请求中返回 user_id 以及 SSO 和 sig 参数?这一点很重要,因为如果不请求中检索用户数据,我就必须让用户再次登录,这将提供糟糕的用户体验。本质上,当用户登录到我的项目并点击“Discourse Connect”按钮时,会触发 Discourse Connect URL,我将收到 SSO 和 sig 参数。为了验证用户,我需要从数据库中获取用户数据,但这需要用户再次登录,而我想避免这种情况。

我想要一种无缝的体验,如果用户已经登录过一次,他们就不需要再次登录。他们应该能够直接使用他们的项目凭据访问 Discourse 论坛。

我不确定我是否理解问题出在哪里。

您是否正在使用此库进行 DiscourseConnecthttps://github.com/spinen/laravel-discourse-sso?

查看该代码(laravel-discourse-sso/src/Controllers/SsoController.php at develop · spinen/laravel-discourse-sso · GitHub Laravel 应用的用户的情况。

1 个赞