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

**URL:** <https://meta.discourse.org/t/oidc-login-via-discourse-ios-app-occasionally-fails-with-csrf-detected-on-callback/394838>\
**Category:** SSO\
**Tags:** openid-connect\
**Created:** [2026年一月31日 11:51 UTC](https://meta.discourse.org/t/oidc-login-via-discourse-ios-app-occasionally-fails-with-csrf-detected-on-callback/394838 "2026-01-31T11:51:35Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![Ethsim2](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ethsim2/32/522255_2.png) [@Ethsim2](https://meta.discourse.org/u/Ethsim2)\
**Post date:** [2026年一月31日 11:51 UTC](https://meta.discourse.org/t/oidc-login-via-discourse-ios-app-occasionally-fails-with-csrf-detected-on-callback/394838/1 "2026-01-31T11:51:35Z")

</div>

您好，

我正在运行 Discourse (2026.2.0-latest ([f7cec86997](https://github.com/discourse/discourse/commits/f7cec86997edc21d6074ceb7666f7e2e6e1b1fdf))) 并使用 OpenID Connect（Azure / Entra ID 作为 IdP）。

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

从服务器日志来看，流程如下：

```plaintext
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 源之外，还有没有推荐的缓解措施？

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

---

_[View the full topic](https://meta.discourse.org/t/oidc-login-via-discourse-ios-app-occasionally-fails-with-csrf-detected-on-callback/394838)._
