我在 Discourse 日志中看到 OIDC 失败:`/auth/oidc` (POST) 出现 `CSRFTokenVerifier::InvalidCSRFToken`

大家好,

我正在运行 Discourse 2026.2.0-latest (26f3e2aa87)(Docker 安装,默认 nginx 模板,无 Cloudflare)。我启用了 OpenID Connect(Microsoft Entra / Azure AD)。

当用户尝试通过 OIDC 注册/登录时,Discourse 会记录一个错误:

(oidc) Authentication failure! CSRFTokenVerifier::InvalidCSRFToken

在日志条目中,我可以看到请求是:

  • REQUEST_URI: /auth/oidc
  • REQUEST_METHOD: POST
  • Referrer: /signup

same_site_cookies 当前设置为 Lax

我的工作理论是 IdP 使用 response_mode=form_post(跨站点 POST)返回,因此使用 SameSite=Lax 时,会话 cookie 可能不会包含在回调中,导致 Discourse 的 CSRF 验证失败。

问题:

  1. same_site_cookies = None 设置为使用 form_post 回调的 OIDC 提供程序的推荐/支持的修复方法吗?
  2. 如果不是,是否有推荐的方法来配置 Discourse OIDC(或 IdP),使回调是 GET(查询)而不是 form_post,以避免需要 SameSite=None
  3. 对于 Discourse OIDC 注册/登录,SameSite=None 是否有任何安全/兼容性注意事项?

谢谢!