皆さん、こんにちは。
私は 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検証が失敗するのではないかということです。
質問です。
form_postコールバックを使用するOIDCプロバイダーに対して、same_site_cookies = Noneを設定することが推奨される/サポートされている修正方法ですか?- そうでない場合、コールバックをGET(クエリ)にし、
SameSite=Noneを必要としないように、Discourse OIDC(またはIdP)を設定するための推奨される方法はありますか? - 特にDiscourse OIDCのサインアップ/ログインに関して、
SameSite=Noneにセキュリティ上または互換性上の注意点はありますか?
よろしくお願いします!