CSRFTokenVerifier::InvalidCSRFToken durante l’inizializzazione del login SAML su Discourse 2026.6
Ciao,
Sto cercando di configurare l’autenticazione SAML con ADFS su una nuova installazione di Discourse.
Ambiente
- Versione Discourse: 2026.6 (Rails 8.0.5)
- Plugin discourse-saml
- Commit del plugin:
7d0fe944bf33588e6813bffaef5eb8f34e37d039
- HTTPS abilitato
- Proxy inverso / Load Balancer davanti a Discourse
- force_https = true
Configurazione SAML
L’endpoint dei metadati funziona correttamente:
https://<hostname>/auth/saml/metadata
I metadati contengono:
- EntityID
- URL ACS
- URL SLO
Il team ADFS ha importato con successo i metadati.
Problema
Quando si fa clic su Accedi con SAML, Discourse non reindirizza mai ad ADFS.
Invece, restituisce immediatamente:
Spiacenti, l'autorizzazione è scaduta o hai cambiato browser.
Log Rails
Iniziata GET "/session/csrf"
Completato 200 OK
Iniziata POST "/auth/saml"
(saml) Autenticazione fallita!
CSRFTokenVerifier::InvalidCSRFToken
Iniziata GET "/auth/failure?message=csrf_detected&strategy=saml"
Verifiche già effettuate
- HTTPS funziona
- Discourse.base_url = https://hostname
- force_https = true
- Cookie di sessione (_forum_session) presente
- authenticity_token incluso in POST /auth/saml
- Plugin discourse-saml sulla branch main più recente
- Endpoint dei metadati funzionante
- Metadati ADFS ricreati dai metadati SP
Richiesta del browser
POST /auth/saml contiene:
- Cookie _forum_session
- authenticity_token
Tuttavia, la richiesta fallisce immediatamente con:
CSRFTokenVerifier::InvalidCSRFToken
Non raggiunge mai ADFS.
Informazioni aggiuntive
DevTools del browser mostra:
x-csrf-token: undefined
Potrebbe trattarsi di un problema CSRF di Rails 8 / OmniAuth, o è necessaria un’altra configurazione per discourse-saml nelle versioni recenti di Discourse?
Qualsiasi suggerimento sarebbe apprezzato.
Discourse.base_url
https://testvknowyeni.vakifbank.intra
SiteSetting.force_https
true
SiteSetting.same_site_cookies
Lax