CSRFTokenVerifier::InvalidCSRFToken beim Starten der SAML-Anmeldung in Discourse 2026.6
Hallo,
ich versuche, die SAML-Authentifizierung mit ADFS auf einer frischen Discourse-Installation einzurichten.
Umgebung
- Discourse-Version: 2026.6 (Rails 8.0.5)
- discourse-saml-Plugin
- Plugin-Commit:
7d0fe944bf33588e6813bffaef5eb8f34e37d039
- HTTPS aktiviert
- Reverse-Proxy / Load Balancer vor Discourse
- force_https = true
SAML-Konfiguration
Der Metadata-Endpunkt funktioniert korrekt:
https://<hostname>/auth/saml/metadata
Die Metadaten enthalten:
- EntityID
- ACS-URL
- SLO-URL
Das ADFS-Team hat die Metadaten erfolgreich importiert.
Problem
Wenn ich auf Mit SAML anmelden klicke, leitet Discourse nie zu ADFS weiter.
Stattdessen wird sofort folgende Meldung zurückgegeben:
Leider ist die Autorisierung abgelaufen oder Sie haben den Browser gewechselt.
Rails-Protokoll
GET "/session/csrf" gestartet
200 OK abgeschlossen
POST "/auth/saml" gestartet
(saml) Authentifizierungsfehler!
CSRFTokenVerifier::InvalidCSRFToken
GET "/auth/failure?message=csrf_detected&strategy=saml" gestartet
Bereits überprüfte Punkte
- HTTPS funktioniert
- Discourse.base_url = https://hostname
- force_https = true
- Sitzungs-Cookie (_forum_session) existiert
- authenticity_token ist im POST /auth/saml enthalten
- discourse-saml-Plugin ist der neueste Main-Branch
- Metadata-Endpunkt funktioniert
- ADFS-Metadaten wurden aus den SP-Metadaten neu erstellt
Browseranfrage
Die POST-Anfrage an /auth/saml enthält:
- _forum_session-Cookie
- authenticity_token
Allerdings schlägt die Anfrage sofort mit folgendem Fehler fehl:
CSRFTokenVerifier::InvalidCSRFToken
Es wird nie eine Verbindung zu ADFS hergestellt.
Zusätzliche Informationen
Die Browser-Entwicklertools zeigen:
x-csrf-token: undefined
Könnte dies ein Problem mit Rails 8 / OmniAuth CSRF sein oder ist eine weitere Konfiguration für discourse-saml in aktuellen Discourse-Versionen erforderlich?
Jede Hilfe wäre dankbar.
Discourse.base_url
https://testvknowyeni.vakifbank.intra
SiteSetting.force_https
true
SiteSetting.same_site_cookies
Lax