使用 Keycloak 进行 Discourse 单点登录

有没有办法将 Keycloak 配置为 Discourse 的认证提供商?我需要实现 SSO(单点登录)方式,这样由 Keycloak 管理账户的用户可以自动获得访问权限,并直接登录到 Discourse 实例。

我阅读过关于 OpenID 配置的资料,有人说在这种设置下,用户必须分别登录,并在 Discourse 中创建单独的账户。这并非我想要的结果。

有什么关于该主题的内容是我可以或应该阅读的吗?

我的目标是将 Discourse 和 Keycloak 分别部署在独立的 Docker 容器中,并实现两者之间无缝的认证。这样,我就可以代表已登录到我 JS 前端应用的用户(其用户数据由 Keycloak 管理),通过我的 API 后端在 Discourse 中创建帖子。

我为使用 Keycloak 作为企业身份和访问管理(IAM)的用户提供的最简单解决方案是设置 Discourse SAML:

配置 Keycloak SAML 相对简单:

或者,您也可以通过 OpenID Connect 进行连接:

若要使用户通过 SAML 自动登录,您必须禁用所有其他认证方法,包括本地登录。请确保您的管理员账户在 Keycloak 中已有对应的账户,否则您将无法访问管理员权限。

有意思,谢谢。
完全禁用其他登录方式并不是一个可行的选择。我希望继续使用 Keycloak 作为我应用的主要认证方式,但同时允许用户在 Discourse 中拥有账户。
这意味着我的用户需要能够通过用户名/密码或他们喜欢的任何社交网络进行注册,并获得一个既能用于我的应用又能用于 Discourse 的账户。
这样的方案可行吗?

附:重新阅读后,您是指要禁用 Keycloak 上的认证方法,还是 Discourse 上的?

Social Auth 或用户名/密码必须通过 Keycloak 实现。此外,我刚刚意识到它不会自动登录用户。它的作用是:如果用户点击登录按钮,将允许用户直接向 Keycloak 进行身份验证。

那么,假设我最初想通过 API 访问所有内容,我还能这样做吗?
登录界面是 Discourse 用户界面的一部分。

假设一个新用户在 Keycloak 服务器上注册,并且我已配置了 SAML 集成。用户已在我的 JS Web 应用中登录,并持有其令牌。我能否仅凭此令牌调用 Discourse API?
也就是说,如果我想在我的 Web 应用中通过自定义 UI 创建帖子,这是否可行?

据我所知,你可以使用 API 密钥访问所有 API 端点。

你应该可以,没有任何障碍阻止你这样做。

@AAverin 你找到解决方案了吗?

@AAverin 你看过这个吗