Discourse iOS 应用通过 OIDC 登录在回调时偶尔会因 csrf_detected 而失败

您好,

我正在运行 Discourse (2026.2.0-latest (f7cec86997)) 并使用 OpenID Connect(Azure / Entra ID 作为 IdP)。

我注意到偶尔会出现登录失败的情况,但这似乎只发生在用户尝试通过 Discourse iOS 应用程序登录时。

从服务器日志来看,流程如下:

POST /auth/oidc
GET  /auth/oidc/callback?...state=...
(oidc) Authentication failure! csrf_detected

回调确实到达了 Discourse,但 CSRF/state 验证失败,因此没有创建用户帐户。

周围的日志表明这发生在应用程序交接流程中:

  • application_name=Discourse - iPhone
  • auth_redirect=discourse://auth_redirect

从用户的角度来看,没有明显的迹象——他们只是被返回到登录屏幕,而且通常不记得看到过错误。

通过 Safari 或桌面浏览器登录时似乎不会发生这种情况。

我的假设是这与 iOS 的 Cookie 分区/应用内浏览器和应用回调之间的上下文切换有关。

我只是想确认一下:

  • 这是 OIDC + iOS 应用程序的预期行为吗?
  • 除了确保严格的规范 HTTPS 源之外,还有没有推荐的缓解措施?

谢谢——如果需要,我很乐意提供匿名化的日志片段。