AzureAD-Fehler AADSTS7500525 mit SAML-Plugin

Hallo!!

Wir hatten das SAML-Plugin mit unserem AzureAD funktionsfähig, aber gestern, nachdem wir auf den letzten Commit aktualisiert hatten, traten folgende Fehler auf, als Benutzer versuchten, sich über SAML zu authentifizieren:

Anmelden
Entschuldigung, wir haben Probleme bei Ihrer Anmeldung.

AADSTS7500525: Es gab einen XML-Fehler in der SAML-Nachricht an Zeile 1, Position 1. Überprüfen Sie, ob der XML-Inhalt der SAML-Nachrichten den SAML-Protokollspezifikationen entspricht.

Dieser Link Azure AD SAML2 request rejected: AADSTS7500525 - Microsoft Q&A deutet darauf hin, dass dies durch „komprimierte SAML-Authentifizierungsanfragen“ verursacht werden kann, die AzureAD nicht unterstützt.

Die Commits vom Dezember enthalten viele Änderungen an SAML (z. B. Konfiguration über Website-Einstellungen), aber ich konnte nicht herausfinden, ob es Änderungen an SAML-Anfragen gab, die dies verursacht haben könnten.

SAML-Konfiguration (funktioniert bis zum Update OK):

## Saml plugin setting
  DISCOURSE_SAML_TARGET_URL: https://login.microsoftonline.com/<<unsere App-ID>>/saml2
  DISCOURSE_SAML_CERT_FINGERPRINT: "<<unser Fingerabdruck>>"
  DISCOURSE_SAML_REQUEST_METHOD: POST
  #DISCOURSE_SAML_FULL_SCREEN_LOGIN: true
  DISCOURSE_SAML_CERT: "-----BEGIN CERTIFICATE-----
<<Unsere Zertifikat-Payload>>
-----END CERTIFICATE-----"
  DISCOURSE_SAML_SYNC_GROUPS: true
  DISCOURSE_SAML_GROUPS_ATTRIBUTE: http://schemas.microsoft.com/ws/2008/06/identity/claims/role
  DISCOURSE_SAML_GROUPS_FULLSYNC: true

Wie kann ich das Auth-Debug aktivieren, um mehr Informationen darüber zu erhalten?

1 „Gefällt mir“

Es tut mir leid zu hören, dass Sie Probleme haben! Sie haben Recht, dass ich in den letzten Wochen viel am SAML-Plugin refaktorisiert habe, daher könnte es damit zusammenhängen.

Wann passiert das? Wenn Benutzer den Login initiieren? Oder wenn sie zu Discourse zurückkehren?

Hätten Sie die Möglichkeit, Ihre Website-URL hier oder per PM zu teilen?

1 „Gefällt mir“

Dies geschieht immer, wenn ein Benutzer sich anmelden muss (eine Sitzung ist abgelaufen oder ein neuer Benutzer versucht, sich anzumelden).

Dies begann nach dem Update auf die Revision 9334abe249 (vorher war es 959923d3cf).

Entschuldigung, aber unser Forum wird intern in einem privaten AWS-Konto gehostet, sodass Sie von außerhalb unseres Netzwerks keinen Zugriff darauf haben.

Wo tritt der Fehler auf? In den Discourse-Protokollen? Auf dem Bildschirm des Benutzers? In Azure?

Könnten Sie bitte einige Screenshots teilen?

1 „Gefällt mir“

Ich habe auch versucht, etwas in den Discourse-Logs zu finden, aber da der Fehler auf der Azure-Seite auftritt, habe ich dort keine Fehlermeldung gefunden.

In production.log stoppt der Anmeldevorgang hier (wahrscheinlich wartet er auf eine Rückmeldung von Azure):

Processing by StaticController#show as HTML
Parameters: {“id”=>“login”}
Rendered static/login.html.erb (Duration: 17.5ms | Allocations: 1440)
Completed 200 OK in 19ms (Views: 18.3ms | ActiveRecord: 0.0ms | Allocations: 2104)
Started GET “/session/csrf” for <> at 2021-12-14 18:28:16 -0300
Processing by SessionController#csrf as JSON
Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.0ms | Allocations: 337)
Started POST “/auth/saml” for <> at 2021-12-14 18:28:16 -0300
(saml) Setup endpoint detected, running now.
(saml) Request phase initiated.

Das für Azure zuständige Team versucht, das empfangene XML zu erhalten, damit wir vielleicht etwas “anderes” darin sehen können. Ich werde Sie informieren, wenn sie es mir schicken.

1 „Gefällt mir“

Der Fehler tritt auf, nachdem der Benutzer auf die Anmeldeschaltfläche klickt.
Dann wird er mit der folgenden Fehlermeldung zur Azure-Anmeldeseite weitergeleitet:

Es ist leider schwierig, hier ohne Zugriff auf die Website herauszufinden, was vor sich geht.

Der nächste Schritt wäre, zu versuchen, das XML zu erhalten, das von Azure empfangen wird, und herauszufinden, was damit falsch ist. Sie sollten dazu in der Lage sein, indem Sie die Nutzlast in den Entwicklertools des Browsers überprüfen und sie dann mit einem Tool wie diesem dekodieren.

2 „Gefällt mir“

Großartig!

Die Rückgabe der Anfrage ist ein http-Code 400:

Request URL: https://login.microsoftonline.com/APP_ID/saml2
Request method: POST
Status code: 400 Bad Request
Remote address: 20.190.173.144:443
Referrer policy: strict-origin-when-cross-origin

Der aufgeblasene SAMLRequest ist (einige IDs aus Datenschutzgründen ausgeblendet):

<samlp:AuthnRequest AssertionConsumerServiceURL='https://INTERNAL_URL/auth/saml/callback' Destination='https://login.microsoftonline.com/APP_ID/saml2' ID='_11111111-1111-1111-1111-111111111111' IssueInstant='2021-12-14T22:33:29Z' Version='2.0' xmlns:saml='urn:oasis:names:tc:SAML:2.0:assertion' xmlns:samlp='urn:oasis:names:tc:SAML:2.0:protocol'> <saml:Issuer>https://INTERNAL_URL</saml:Issuer> </samlp:AuthnRequest>

Eine Sache, die mir beim Vergleich meiner Anfrage mit dem Beispiel unter Single sign-on SAML protocol - Microsoft identity platform | Microsoft Learn aufgefallen ist, ist, dass in meiner AuthnRequest der Parameter fehlt

xmlns="urn:oasis:names:tc:SAML:2.0:metadata"

Es sieht so aus, als hätte meine kürzliche Refaktorierung versehentlich die Komprimierung für die SAML POST-Bindung hinzugefügt. Ich habe dieses Verhaltensänderung in FIX: Do not compress SAML request for POST binding (#55) · discourse/discourse-saml@792a51c · GitHub rückgängig gemacht.

Können Sie bitte das SAML-Plugin aktualisieren und dann sehen, ob die Dinge besser funktionieren?

4 „Gefällt mir“

Hallo David,

Nach dem Update auf FIX: Do not compress SAML request for POST binding (#55) · discourse/discourse-saml@792a51c · GitHub ist die SAML-Authentifizierung hier wieder normal.

Vielen Dank für die Hilfe und die ganze Arbeit am Plugin!

1 „Gefällt mir“

Dieses Thema wurde nach 20 Stunden automatisch geschlossen. Neue Antworten sind nicht mehr möglich.