Drupal Discourse SSO 问题

您好,

我是 Discourse 的新手,正尝试使用 Discourse SSO 模块将我的论坛与 Drupal 网站集成。我遵循了该模块的说明以及此主题中的内容,但遗憾的是,URL “mydrupalwebsite.com/discourse/sso” 返回了 404 错误。

自该主题发布以来,该模块增加了使用 API 密钥的新设置,但我不清楚该如何使用它。

有人遇到过同样的问题吗?

谢谢

2 个赞

您能分享一下您正在使用的 Drupal 模块的链接吗?如果是这篇帖子中链接的模块,它上次更新于 2015 年 3 月,因此很可能存在一些问题。

这个 Drupal SSO 模块于 2019 年 12 月更新:https://www.drupal.org/project/discourse_sso。值得尝试一下。

3 个赞

我正在使用第二个,并且是最新版本。

我已经设置了 SSO 密钥和 SSO 网址,但在尝试登录时,虽然能看到预期的重定向,但 /discourse/sso 却返回了 404 页面。

该模块是否有文档?启用 SSO 的常规流程是:将 SSO 端点添加到 Discourse 的 sso url 站点设置,将 SSO 密钥添加到 sso secret 站点设置,然后启用 enable sso 站点设置。初次设置时,您可能还需要启用 verbose sso logging 站点设置。启用该设置后,您可以在站点的错误日志(位于“管理 / 日志 / 错误日志”)中查看有关 SSO 错误的详细信息。

启用 Discourse 设置后,请确保已将您的 Discourse 站点 URL 和 sso secret 添加到 SSO 提供商站点。

根据您遇到的错误,很可能是您的 Discourse 站点尚未启用 enable sso 站点设置。

如果在启用 SSO 后访问 Discourse 站点时遇到问题,作为管理员,您可以通过访问 Discourse 站点的 /u/admin-login 来绕过 SSO 登录。在页面表单中输入您的管理员电子邮件地址,系统将向您发送一次性登录链接。

1 个赞

非常感谢您的帮助。不幸的是,该模块的文档仅限于其项目页面。

我只检查了“启用 SSO”、“详细 SSO 日志”选项,并在“SSO URL”字段中填写了“mywebsite/discourse/sso”,同时填写了“SSO 密钥”字段。

我遵循了 Drupal 模块的指南,在相应字段中输入了 Discourse 论坛的 URL 和 SSO 密钥。

但我尝试登录时仍然收到 404 错误,URL 如下:
https://mywebsite/discourse/sso?sso=bm9uY2U9MTJlMmI4ZWNjNzU4ZGE3YTg5ZWIwZDI2MmM5ZTUzOWEmcmV0dXJuX3Nzb191cmw9aHR0cHMlM0ElMkYlMkZmb3J1bXMuc2VnYS1tYWcuY29tJTJGc2Vzc2lvbiUyRnNzb19sb2dpbg%3D%3D&sig=96726cef3a6bb69a0863f66fb0e09ce3edb1ea77f3fd2d9e69cdaf932aede6a2

以下是日志:verbose_sso.txt|附件 (5.9 KB)

如果问题不在 Discourse 的设置中,我将再次联系该模块的开发者。

再次感谢。

我查看了该日志条目,但它并未显示错误——它只是 Discourse 上 SSO 过程开始的日志记录。在此之后不久应该会生成另一个显示错误的日志条目。能否请您再次尝试该流程?每次登录尝试都应生成相应的“详细 SSO 日志”条目。第一个条目显示 Discourse 上的过程开始,第二个条目则与 Discourse 如何处理从您的网站收到的响应有关。

有可能存在其他相关的错误消息,其开头并非“详细 SSO 日志”。请查看您发起 SSO 请求前后时间段的日志条目。

我再次尝试,收到了三条完全相同的日志消息,与之前的一条相同。如果按此推断,那意味着我的网站根本没有响应。

是的,听起来没错。你可以尝试打开浏览器的开发者工具,切换到“网络”选项卡,查看发出的请求。在该选项卡上勾选“保留日志”选项,然后点击你 Discourse 网站上的登录链接。

1 个赞

您好,

关于此事的简要更新:Discourse SSO 模块 已打补丁,不再导致站点崩溃。

但它仍然无法正常工作,因为一旦登录,就无法正确注销。另一个问题 已提交,如果有人愿意查看,欢迎参与。

1 个赞

感谢您跟进此事!如果模块的新问题得到解决,请告诉我们。

好的,我仍在继续我的调查。

有没有什么原因导致我无法通过 SSO 使用不同账户登录 Discourse?也许是 Cookie 设置的问题?

启用 SSO 后,如果我退出登录再尝试重新登录,系统会自动以第一个账户登录。

不过,当我禁用 SSO 时,没有任何问题。

这听起来像是登出 Discourse 的操作并未与登出 SSO 提供商网站的操作同步。由于您仍然登录在 SSO 提供商网站上,下次点击 Discourse 登录链接时,系统会基于您在 SSO 提供商的登录状态进行身份验证。

Discourse 的 logout redirect 站点设置可用于将用户登出 SSO 提供商网站。当用户登出 Discourse 时,他们将被自动重定向到该 URL。SSO 提供商需要处理该 URL 以完成用户登出。不过,我对 Drupal 不够熟悉,无法确定具体需要如何实现这一功能。

1 个赞

好的,问题已解决。总结如下:

  • 此模块 运行正常,仅 Drupal 用户头像存在一个 bug,但已有补丁待发布;
  • 此帖子 中关于 Discourse 设置的说明有误:sso_url 应以 /discourse_sso 结尾,而不是 /discourse/sso
  • 如果您希望使用多个不同账户登录,必须将 http://mywebsite/user/logout 设置为登出重定向地址,并且如果您在 Discourse 网站上使用了 Ghostery 插件,请在浏览器中禁用它。

感谢您的帮助,@simon

2 个赞