Discourse 2026.6 で SAML ログインを開始する際に CSRFTokenVerifier::InvalidCSRFToken が発生
こんにちは。
新規インストールした Discourse 環境で ADFS を使用した SAML 認証を設定しようとしています。
環境
- Discourse バージョン: 2026.6 (Rails 8.0.5)
- discourse-saml プラグイン
- プラグインのコミット:
7d0fe944bf33588e6813bffaef5eb8f34e37d039
- HTTPS 有効
- Discourse の前にリバースプロキシ / ロードバランサーを配置
- force_https = true
SAML 設定
メタデータエンドポイントは正常に動作しています:
https://<hostname>/auth/saml/metadata
メタデータには以下が含まれています:
- EntityID
- ACS URL
- SLO URL
ADFS チームはメタデータのインポートに成功しました。
問題
SAML でログイン をクリックすると、Discourse は ADFS へリダイレクトしません。
代わりに、すぐに以下のメッセージが返されます:
Sorry, the authorization timed out, or you have switched browsers.
Rails ログ
Started GET "/session/csrf"
Completed 200 OK
Started POST "/auth/saml"
(saml) Authentication failure!
CSRFTokenVerifier::InvalidCSRFToken
Started GET "/auth/failure?message=csrf_detected&strategy=saml"
すでに確認済みの事項
- HTTPS が動作している
- Discourse.base_url = https://hostname
- force_https = true
- セッションCookie (_forum_session) が存在する
- authenticity_token が POST /auth/saml に含まれている
- discourse-saml プラグインは最新 main ブランチ
- メタデータエンドポイントが動作している
- ADFS メタデータは SP メタデータから再作成済み
ブラウザのリクエスト
POST /auth/saml には以下が含まれています:
- _forum_session Cookie
- authenticity_token
しかし、リクエストはすぐに以下のエラーで失敗します:
CSRFTokenVerifier::InvalidCSRFToken
ADFS には到達しません。
追加情報
ブラウザの DevTools では以下が表示されています:
x-csrf-token: undefined
```\n
これは Rails 8 / OmniAuth の CSRF 関連の問題でしょうか、それとも最近の Discourse バージョンでの discourse-saml 設定に別の要件があるのでしょうか?
ご助言をいただければ幸いです。
Discourse.base_url
https://testvknowyeni.vakifbank.intra
SiteSetting.force_https
true
SiteSetting.same_site_cookies
Lax