使用 OAuth2 的 Discourse SSO

我想通过 GitHub OAuth 设置单点登录(SSO)。当用户通过 GitHub 登录我的网站时,他们也应同时登录 Discourse。Discourse 的评论已嵌入到网站中。

我该怎么做?

要通过 OAuth2 连接到您的自有站点,您可以使用此插件:

“使用 GitHub 登录”功能已内置于 Discourse 中,您可以在这里找到设置说明:

我仍然感到困惑。

如果之前表述不够清楚,我的情况如下:

一个带有 GitHub OAuth 的网站。
一个带有 GitHub OAuth 的 Discourse。

这两个系统都没有其他登录方式。
当用户登录到我的网站时,他们也应该自动登录到 Discourse。

我缺失的是两者之间的关联。当用户通过 GitHub OAuth 在我的网站上完成认证后,我该如何让他们同时登录到 Discourse?

当有人登录您的网站时,唯一的通信发生在 GitHub 和您的网站之间。

即:
您的网站调用 GitHub,询问该用户是否存在于其用户数据库中。
GitHub 响应“是”(或“否”),并根据您网站的要求返回用户数据或身份验证令牌。
随后,该用户即登录到您的网站。

在此流程中,Discourse 并未参与任何交互。您需要的是一种方法,告知 Discourse 该用户刚刚登录,并需要同时登录到 Discourse。

您需要一种方式,将 Discourse 的登录操作与您的网站登录操作同步排队,以便 Discourse 能够知晓用户何时登录或登出。

Auth0 开箱即用即可很好地实现这一点。
另一种方法是使用 Discourse 作为您的单点登录(SSO)服务器。

谢谢大家的回复!

我意识到我使用的认证插件实际上是通过 OAuth 运行并返回 JWT 的。我认为 discourse-jwt 这个插件应该适合我。