无法在最新版本中使用 LDAP 登录

大家好,

抱歉在此打扰大家,关于这个问题,我们最近将 Discourse 安装更新到了最新版本。我们使用的是 LDAP 插件(https://github.com/jonmbake/discourse-ldap-auth.git),但用户无法登录。

如果您保持会话未断开,则不会遇到任何问题。但是,如果您现在尝试登录,点击“登录”后,URL 会变为:/auth/failure?message=csrf_detected,并出现错误消息:授权超时,或您已切换浏览器。请重试。

是否有人知道是否有最近的更改可能导致这种情况?

谢谢。

我认为@david 可能会有建议?

顺便问一个问题,有没有办法回滚到之前的版本?我四处搜索了一下,大家的共识是禁用插件(或导致问题的特定插件)。但我无法禁用这个插件,因为那是我的用户登录平台的唯一方式 :stuck_out_tongue:

这实际上并不受支持,但如果你有备份,可以删除 postgres 数据目录,在 app.yml 的版本行中提交一个 commit,重新构建,然后恢复备份。

是的,我做了备份,现在正尝试使用之前版本的 SHA 来重建,因为当前版本运行不太稳定。

与此同时,我手头还保留着最新的稳定版,看看能否以某种方式修复问题。

我不确定 @david 是否会像 @codinghorror 建议的那样提供建议,但既然我的用户群已被锁定(除非他们保留了会话),我愿意尝试任何方法。

快速更新:尝试使用当时的机器快照备份版本(升级前)。点击“登录”只是让主页面重新加载了两次。尝试用当时的确切 commit sha 重新构建,但不幸的是,遇到了 DB Rake 错误。:no_mouth:

一直在搜索关于 LDAP 问题的其他报告,似乎没有。这可能是由外部源引起的吗?

最后更新:

问题已解决,找到了根本原因,与 Discourse 无关(抱歉各位!)。问题在于证书已更新并通过 HAP 提供,而我们此前并未使用 HAP,Discourse 一直自行提供证书。我们忽略了这一细节,从而导致出现了 CORS 错误。

经验教训:

  • 回滚 Discourse 并不可行,最好对整个机器进行备份(幸好我们做到了)。
  • 我尚未查明为何按照此处说明使用特定 SHA 进行重建如此困难,我未能成功完成该操作。
  • 最好始终通过 HAP 提供证书,但切勿忘记这一点。(作为给其他人的提示:必须添加标志 'set-header X-Forwarded-Proto https',因为 Discourse 自带 NGINX,问题就出在这里。)
  • 无人报告相同问题(考虑到这是一个边缘情况,因为该插件并非官方插件),这也印证了上述判断(社区正如预期般运行 :P)。
  • 问题直到较晚才显现(以至于我们已不记得证书变更),是因为更新触发了重建操作,而正是在此过程中失败。

再次感谢,并为造成的打扰致歉!