2016-11-14 1 views
0

Ich bekomme immer "AADSTS75005: Die Anfrage ist keine gültige Saml2-Protokoll-Nachricht." wenn ich versuche, eine AuthnRequest an Azure AD/idp zu senden.Korrekte AuthnRequest zu Azure AD/idp

Die XML sieht so aus, bevor ich es zip, konvertieren zu base64string und URL codieren die Nachricht.

<samlp:AuthnRequest xmlns="urn:oasis:names:tc:SAML:2.0:metadata" ID="ide13dd575-3f6c-4131-9b9d-e12c644cf18f" Version="2.0" IssueInstant="2016-11-14T14:28:27.5450323Z" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"><Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">{homepage url registered in azure app registrations}</Issuer></samlp:AuthnRequest> 

der Benutzer wird auf https://login.microsoftonline.com/ umleiten {SAML-P-Sign-On Endpoint von Endpunkten in app in azur}/saml2? SAMLRequest = {codierte SAML-Anforderung entfernt}

Das gleiche funktioniert, wenn ich senden es zu einem anderen SAML2 IDP (die SimpleSAMLphp verwenden)

der Web-Browser zu https://login.windows.net/ umleiten wird {Endpunkt id}/saml2? SAMLRequest = jZBLasMwFEW3YjRXbKny72EbAqVgaCkkbQedBEVWiKktuXrP% 2faytgy6pW6hJhoXQ6YV7OPf% 2bfH1XqMdhgvVMR7exr7NFij7GwWHN5uDAa% 2bwRnB4tAhnYru9uQa4SGC3pTpNmUXtds77rrCjy9KB4LpXian% 2bV8aJLUl6Wpdknytg0y1n0ZAP23tVsQSxNxNm2Dkk7 WqJEZFwILtSDlCBSkHIlZCbLtHhmZyU4uV4Wm4Inb% 2fzAmurED% 2f9ZoxFtoMWMNUeiCSGOx8% 2fHTbu78WG3JW1e7t9sOAz% 2bvYrP1KaK% 2fx7X% 2fAI% 3d

+0

Wie zappen Sie es? Erstellen Sie diese Anforderung manuell oder verwenden Sie eine Bibliothek eines Drittanbieters, um damit umzugehen? Können Sie ein Beispiel für die verschlüsselte Anfrage bereitstellen? – Steve

+0

Sie erwähnen eine Homepage URL, aber das soll die Application ID URI sein. Stellen Sie sicher, dass das korrekt ist, und wenn das korrekt ist, könnte etwas mit der Art, wie Sie die Anfrage senden, nicht stimmen. – juunas

+0

Steve: Ich verwende DeflateStream (output, CompressionMode.Compress), um es zu komprimieren. Ich erstelle die Anfrage manuell und verwende keine Bibliothek. Wird mit der Frage mit einer verschlüsselten Anfrage aktualisiert. Juumas: Ich habe verschiedene URIs ausprobiert. Anwendungs-ID (das ist nur ein Guid), Homepage-URL (ich denke, hier wird die Authentifizierungsantwort gepostet). Die Anfrage, die ich gerade mit einem Abfragezeichenfolgenparameter sende. –

Antwort

0

ich das Problem dazu gefunden. Ich habe die App im neuen azurblauen Portal erstellt. Es zeigt den Endpunkt https://login.windows.net/ {myid}/saml2

ich eine neue App im alten Portal erstellt werden und jetzt zeigt es den Endpunkt https://login.microsoftonline.com/ {myid}/saml2

sein, wenn ich mir die beiden Apps erstellt (eine in der neuen und einem im alten Portal) im alten Portal, zeigen sie sie https://login.microsoftonline.com/ {myid}/saml2

wenn ich das gleiche in dem neuen Portal zu tun, es zeigt https://login.windows.net/ {myid}/saml2 sowohl auf aps.

Es gab also keinen Fehler mit meinem Code, aber das Azure AD-Portal meldet ungültige Endpunkte im neuen Portal.

enter image description here

0

Wie @Steve bereits oben erwähnt, das Problem scheint mit der Art und Weise Sie Abblasen/Codierung des AuthenticationRequest zu sein. Verwenden Sie den Beispielcode unter https://stackoverflow.com/a/25155050/983244, vorausgesetzt, Sie verwenden .NET (Sie erwähnten DeflateStream).

würde ich auch aus den Namespace-Deklarationen deutlich, so dass Ihre AuthnRequest sieht aus wie

<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" 
        xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" 
        ID="ide13dd575-3f6c-4131-9b9d-e12c644cf18f" 
        Version="2.0" 
        IssueInstant="2016-11-14T14:28:27.5450323Z"> 
    <saml:Issuer>{homepage url registered in azure app registrations}</saml:Issuer> 
</samlp:AuthnRequest> 
+0

Wenn ich einen Online-Decoder https://idp.ssocircle.com/sso/toolbox/samlDecode.jsp verwende und das Beispiel in der Frage verwende, dekodiert es gut, also denke ich nicht, dass es mit der Deflation/Codierung der Anfrage in Verbindung stehen sollte ... und es ist genauso deflationiert/kodiert wie der Link, den Sie erwähnen und wie ich bereits erwähnt habe. Derselbe Code funktioniert mit einem anderen SAML2-Identity-Provider.Könnte es etwas mit dem Namen des Abfragezeichenfolgenparameters sein? ? SAMLRequest = xxx Ich kann keine Informationen über den Parameternamen finden. Ich bekomme die gleiche Fehlermeldung, wenn ich den Parameternamen ändere. –

Verwandte Themen