CSRFTokenVerifier::InvalidCSRFToken lors de l'initialisation de la connexion SAML sur Discourse 2026.6

CSRFTokenVerifier::InvalidCSRFToken lors de l’initialisation de la connexion SAML sur Discourse 2026.6
Bonjour,

J’essaie de configurer l’authentification SAML avec ADFS sur une installation Discourse fraîche.

Environnement

  • Version de Discourse : 2026.6 (Rails 8.0.5)
  • Plugin discourse-saml
  • Commit du plugin :
7d0fe944bf33588e6813bffaef5eb8f34e37d039
  • HTTPS activé
  • Proxy inverse / Équilibreur de charge devant Discourse
  • force_https = true

Configuration SAML

Le point de terminaison des métadonnées fonctionne correctement :

https://<hostname>/auth/saml/metadata

Les métadonnées contiennent :

  • EntityID
  • URL ACS
  • URL SLO

L’équipe ADFS a importé les métadonnées avec succès.

Problème

Lors du clic sur Connexion avec SAML, Discourse ne redirige jamais vers ADFS.

Il retourne immédiatement :

Désolé, l'autorisation a expiré ou vous avez changé de navigateur.

Journal Rails

Started GET "/session/csrf"
Completed 200 OK

Started POST "/auth/saml"

(saml) Échec d'authentification !
CSRFTokenVerifier::InvalidCSRFToken

Started GET "/auth/failure?message=csrf_detected&strategy=saml"

Éléments déjà vérifiés

  • HTTPS fonctionne
  • Discourse.base_url = https://hostname
  • force_https = true
  • Le cookie de session (_forum_session) existe
  • authenticity_token est inclus dans POST /auth/saml
  • Le plugin discourse-saml est sur la branche main la plus récente
  • Le point de terminaison des métadonnées fonctionne
  • Les métadonnées ADFS ont été recréées à partir des métadonnées SP

Requête navigateur

POST /auth/saml contient :

  • Cookie _forum_session
  • authenticity_token

Cependant, la requête échoue immédiatement avec :

CSRFTokenVerifier::InvalidCSRFToken

Elle n’atteint jamais ADFS.

Informations supplémentaires

Les DevTools du navigateur montrent :

x-csrf-token: undefined

Pourrait-il s’agir d’un problème CSRF lié à Rails 8 / OmniAuth, ou y a-t-il une autre configuration requise pour discourse-saml sur les versions récentes de Discourse ?

Toute suggestion serait appréciée.


Discourse.base_url

https://testvknowyeni.vakifbank.intra

SiteSetting.force_https

true

SiteSetting.same_site_cookies

Lax