大家好,
我正在运行 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/oidcREQUEST_METHOD: POST- Referrer:
/signup
same_site_cookies 当前设置为 Lax。
我的工作理论是 IdP 使用 response_mode=form_post(跨站点 POST)返回,因此使用 SameSite=Lax 时,会话 cookie 可能不会包含在回调中,导致 Discourse 的 CSRF 验证失败。
问题:
- 将
same_site_cookies = None设置为使用form_post回调的 OIDC 提供程序的推荐/支持的修复方法吗? - 如果不是,是否有推荐的方法来配置 Discourse OIDC(或 IdP),使回调是 GET(查询)而不是
form_post,以避免需要SameSite=None? - 对于 Discourse OIDC 注册/登录,
SameSite=None是否有任何安全/兼容性注意事项?
谢谢!