cgcs
(cgcs)
1
我遵循了 官方 SSO 帖子,但似乎无法让通用登录页面显示出来。
当我仅启用 OAuth 时,它正常工作。我使用“使用 Auth0 登录”按钮成功登录。但当我启用 SSO 后,它重定向到了 Auth0 页面,却只显示一个错误页面,提示“invalid_request:无效参数:client_id 必须是字符串”。我首先想到的是我填写的“sso_url”不正确。说实话,我完全不知道那里应该填什么,所以我填了“https://.auth0.com/authorize”。
有人遇到过类似问题吗?或者有什么建议?
simon
2
sso url 应设置为您在 SSO 提供商网站上配置的、用于处理 Discourse SSO 请求的 URL。
Discourse 的 SSO 实现并不使用 OAuth。这很可能是造成混淆的原因。
您的 SSO 提供商网站使用的是哪种语言或框架?也许已经有针对该框架的 SSO 实现可供您使用。
cgcs
(cgcs)
3
我的 SSO 提供商是 Auth0.com。我按照这个主题设置了 OAuth2,然后尝试添加 SSO。
也许我需要进一步研究 Auth0 方面,因为我只配置了应用程序和域名(租户);我没有看到任何关于 SSO 的内容。
simon
4
这说得通。Auth0 和 Discourse SSO 是完全独立的系统,无法在您的网站上同时启用两者。听起来您只需要确保 Auth0 在您的网站上正确配置即可。
作为 Discourse 的新手,我理解你对 SSO 功能的困惑。虽然有一个相关主题,但它并没有很好地阐明其区别,尤其是因为部分 SSO 设置是用于将 Discourse 作为 SSO 提供商(有点像你想使用 Auth0 的方式)。
若要通过 SSO 功能使用外部身份提供商,你需要一个中间服务,例如 discourse-sso-oidc-bridge。我今天已经成功用 Keycloak 替代 Auth0 实现了该功能,步骤应该大致相同。
如果你只是想像使用 Google/Facebook/GitHub 等社交登录那样使用 Auth0,那么你可能应该使用 discourse-openid-connect 插件。你需要安装该插件并使用其提供的设置。我之前在独立的 SSO 功能出现之前就用 Keycloak 尝试过该插件。它不需要中间的桥接服务,或许能满足你的需求(前提是你不希望在用户再次登录时让 Discourse 更新或同步账户详细信息,而这正是 Discourse 同步账户详情的唯一时机)。
用户会被提示创建账户,但所有表单字段都会由你的身份提供商自动填充。该插件的未来更新计划跳过此步骤,直接创建账户(前提是这是唯一的登录选项),就像现有的 SSO 功能一样。