OIDC 插件突然失效,对新用户静默失败

我们有一个正在运行的 Discourse 实例,但停止了没有账户的用户登录,我们对此感到困惑!这发生在几周前,在我们安装了 Discourse AI 插件并重启实例之后。直到最近几天客户投诉才引起我的注意。我们通常每天都有很多新用户注册。

设置

  • 通过官方 Docker 自托管 Discourse
  • https://community.enginedj.com
  • 使用我们自己的 OIDC 提供商的 OIDC 插件(:camera_flash: 1)
  • 除了 OIDC 没有其他身份验证方式(即没有电子邮件+密码注册)(:camera_flash: 2)
  • 上一次成功的新用户注册是在 2023 年 11 月 22 日新西兰标准时间上午 5:23
  • AI 插件安装于 ~ 2023 年 11 月 22 日新西兰标准时间上午 6:03(这会导致 Discourse 实例重启)
  • 自 3 月份以来没有与身份验证相关的系统配置更改的事件日志(:camera_flash: 3)
  • 论坛活动充足,磁盘空间/数据库等没有问题。

问题

  • 登录流程工作正常,但在返回没有预先存在账户的用户时,他们没有被登录
  • 没有显示错误消息
  • 日志中没有错误消息(日志中有 CSRF 错误,但与登录失败无关)
  • OIDC 插件的详细日志显示它正确地从 OIDC 提供商查询数据,获取声明等,并且没有显示任何问题(:camera_flash: 4)

我们尝试过的

  • 禁用 Discourse AI 插件
  • 移除 Discourse AI 插件
  • 检查 cookie 响应是否存在域不匹配
  • 将所有插件/组件更新到最新版本(:camera_flash: 5)
  • 确认没有更改任何设置
  • 检查了主机上的日志。没有发现异常。

这是问题的视频。第一次登录是没有 Discourse 账户的用户。第二次是我使用管理员账户登录。

https://www.loom.com/share/3aad210d844849dc8154ce6e5db50d29

有什么想法可以指导我们下一步该看什么吗?

:camera_flash: 1

:camera_flash: 2

:camera_flash: 3

:camera_flash: 4

:camera_flash: 5

1 个赞

您好 @snikch :wave:

当我在您的网站上进行登录流程时,我在 JavaScript 控制台中看到了这个错误。它来自主题 ID=12,该主题似乎正在尝试(并失败)为登录按钮添加某种额外的样式?

如果我使用浏览器的开发者工具来“阻止”该特定主题的 JavaScript,那么一切似乎都能正常工作。

因此,我认为要使事情再次正常工作,您可以禁用主题 ID=12,或者编辑它以修复/删除有问题的代码。

话虽如此,我们真的不希望这种主题错误完全破坏网站的登录功能!因此,我将研究我们是否可以改进这里的错误处理 :eyes:(编辑:改进此问题的 PR 在此处)。

5 个赞

哇,谢谢 @david。我看到了那个错误,并创建了一个卡片来处理它,但我一直认为这与用户登录无关,因为我假设那都是服务器端处理的,并且在 JS 渲染页面之前就完成了!做了很多假设 :facepalm: 我现在明白了,需要它来显示“创建账户”模态框。

非常感谢你的帮助 :heart_eyes_cat:

1 个赞

此主题已在 21 小时后自动关闭。不再允许回复。