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