您好,
我正在运行 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 - iPhoneauth_redirect=discourse://auth_redirect
从用户的角度来看,没有明显的迹象——他们只是被返回到登录屏幕,而且通常不记得看到过错误。
通过 Safari 或桌面浏览器登录时似乎不会发生这种情况。
我的假设是这与 iOS 的 Cookie 分区/应用内浏览器和应用回调之间的上下文切换有关。
我只是想确认一下:
- 这是 OIDC + iOS 应用程序的预期行为吗?
- 除了确保严格的规范 HTTPS 源之外,还有没有推荐的缓解措施?
谢谢——如果需要,我很乐意提供匿名化的日志片段。