SSO 重定向问题

我正在通过 WP Discourse 插件将 Discourse 与 Wordpress 集成,并使用 Wordpress 作为 Discourse Connect 提供商,但遇到了一个问题:未经验证的用户访问 Discourse 实例并单击任何需要登录的按钮会导致他们陷入无限重定向循环。

期望的行为是:用户单击 Discourse 登录按钮 → 用户被重定向到 Wordpress 登录页面 → 用户进行身份验证并被重定向回他们之前的 Discourse 页面。如果用户已经经过身份验证并访问 Discourse 实例,则目前没有问题。当未经验证的用户首先访问 Discourse 实例时,会出现此错误。

当前的行为是:用户单击 Discourse 登录按钮 用户被重定向到 https://[discourse-instance]/session/sso?return_path=%2Ft%2F[用户之前的 Discourse 页面]%2F16 用户被重定向到 https://[wordpress-site]/?sso=[SSO token]%3D%3D&sig=[Signature token] 用户被重定向到 https://[wordpress-site]/?sso=[SSO token]%3D%3D&sig=[Signature token]&redirect_to=%2F%3Fsso%[SSO token]%253D%253D%26sig%3D[Signature token] → 然后循环递归地继续,直到浏览器抛出“重定向过多”错误

我还没有找到一个解决此问题的帖子,最接近的是

但我们启用了所有地方的 SSL,并且此问题在所有浏览器中都会出现。有什么建议可以解决此问题吗?

Chrome 97 发布时存在一个与重定向期间 Cookie 处理相关的错误,已知该错误在某些情况下会破坏 DiscourseConnect。在等待 Google 推出修复程序的同时,我们在 Discourse 中添加了一个变通方法。将您的 Discourse 网站升级到最新版本应该可以解决此问题。您可以尝试一下,然后告知我们是否有效?

(变通方法已在此提交中添加)

3 个赞

感谢您的回复,我刚检查过以确保我们使用的是最新版本,但不幸的是错误仍然存在。我们的论坛托管在 Discourse 上,所以它应该会定期自行更新。错误与之前一样,还有什么我应该尝试的吗?托管 Discourse 的设置是否可能导致此问题?

1 个赞

@dbwhite,请您:

  1. WP Discourse 的“DiscourseConnect”设置中启用“详细的 DiscourseConnect 日志”
  2. 重现问题
  3. 前往 WP Discourse 的“日志”并“下载”它们

然后将日志私信给我,我会仔细查看具体情况。请注意,日志不包含任何个人身份信息或秘密。

2 个赞

@angus@dbwhite,这个问题的可能原因可能是WordPress站点正在使用Woocommerce。Woocommerce会添加一个登录重定向,这可能会导致DiscourseConnect出现问题。这些重定向可以通过安装和激活https://github.com/scossar/wp-discourse-woocommerce-support来覆盖,或者通过将该插件自述文件中提供的代码片段添加到站点的themetheme中来覆盖。

这里描述的重定向问题似乎与我过去在其他Woocommerce站点上遇到的情况类似。在那些情况下,通过安装我链接的WordPress插件解决了问题。

如果这是问题的原因,我想我们是否应该考虑直接在WP Discourse插件中添加Woocommerce支持。

4 个赞

这将非常有帮助。

我没有遇到 OP 所描述的确切问题,但在用户登录后将他们重定向回 Discourse 论坛的相应位置时,我遇到了困难 :disappointed_face:

安装并激活 WP Discourse WooCommerce Support 插件是否能为您解决此问题?

在此发布一项更新,事实证明我们使用的其中一个插件干扰了 wp_login_url() WordPress 函数的返回值。移除该插件后,一切都按预期运行!

1 个赞

帖子已拆分为新主题:使用 DiscourseConnect 和 Wordpress 时出现 Rails 错误