Wie erstellt signed AuthNRequest?

9

Ich stelle eine Schnittstelle zu einem IDP her und lasse eine grundlegende AuthNRequest wie folgt erstellen:

%Vor%

IDP möchte, dass ich die Anfrage als unterschrieben sende. Meine Fragen sind:

  1. Wie stelle ich Digest-Werte ein?
  2. Wie setze ich den Signaturwert?
  3. Für das x509-Zertifikat habe ich den öffentlichen Schlüssel meiner App festgelegt. Korrekt?
  4. Welche Daten werden zur Berechnung der Werte verwendet? Ist es meine ursprüngliche Authentifizierungsanfrage ohne Signaturelement?
gbhakta 06.03.2013, 18:58
quelle

6 Antworten

5

Wenn Sie Ihre eigenen Anfragen ohne größere Frameworks erstellen, kann ich OpenSAML empfehlen. Es ist eine Bibliothek, die bei der Erstellung von SAML-Nachrichten hilft.

In meinem Buch Ein Leitfaden zu OpenSAML wird dies und mehr im Detail erklärt.

EDIT Ich habe eine Neuauflage des Buches herausgegeben, die OpenSAML V3 abdeckt.

>

Hier ist ein Beispiel, das ich bei der Signierung von SAML-Nachrichten geschrieben habe

Und einer zum Versand von AuthnRequests.

    
Stefan Rasmusson 07.03.2013 09:46
quelle
4

Nur um zu bemerken, dass vieles davon in der Dokumentation behandelt wird:

SAML-Metadaten .

Um die Anfrage signiert zu bekommen, müssen Sie etwas wie folgt hinzufügen (normalerweise in der sp.xml gefunden):

%Vor%

Der Signaturschlüssel würde etwa so aussehen:

%Vor%

wo der MII ... der öffentliche Schlüssel ist.

Laut @Stefan ist es viel einfacher, eine Bibliothek zu verwenden.

    
nzpcmad 07.03.2013 18:10
quelle
3

SAML Authentication Request ist ein XML-Dokument. Sie können SAML-Authentifizierungsanfragen genauso signieren wie jedes andere XML-Dokument. Es gibt jedoch einige Einschränkungen:

  1. Die Signatur muss eine umhüllte Signatur sein.
  2. Bevor es verdaut wird, darf die SAML-Authentifizierungsanfrage nicht durch eine andere Methode als die umhüllte Signaturtransformation und die exklusive Kanonisierungstransformation transformiert werden.
  3. Das Signaturelement muss nur ein Referenzelement enthalten.
  4. Der URI des einzigen Referenzelements muss den Wert des ID-Attributs der signierten SAML-Authentifizierungsanforderung enthalten.
  5. Vor der Signierung muss das SignedInfo-Element mithilfe der exklusiven Kanonisierungsmethode kanonisiert werden.

Sie können die SAML Assertions and Protocols Specification genauer lesen ( Ссылка ) in Abschnitt 5.

    
fajarkoe 09.03.2013 11:41
quelle
2

Nun, Dinge in Bezug auf Sicherheit sind nie einfach ... Sie sollten die Dokumentation Linked by @nzpcmad, sowie SAML2-Profile (suchen Sie nach WB SSO - Web Browser Single Sign On).

Für Java OpenSaml ist in der Tat eine der einfachsten Lösungen.

    
Erwin 08.03.2013 11:49
quelle
1

Eine Falle scheint zu sein, dass bei HTTP-Redirect Binding die Signatur durch zusätzliche URL-Parameter transportiert wird und nicht Teil des SAMLRequest-Wertes, z. Ссылка

    
axelrose 20.03.2017 11:19
quelle
1

Ihre Frage ist unzureichend!

Die gesendete AuthRequest scheint REDIRECT -Anfrage zu sein, bei der Digest, Signatur und Zertifikat nicht angezeigt werden, da alle diese Details in URL als Parameter enthalten sind.

Versuchen Sie, die POST SSO -Anfrage zu verwenden, in der Sie Digest, Signatur und Zertifikat in der SAML-Anfrage sehen.

Einige der Punkte:

Häufig

  • Sowohl IdP als auch SP sollten ihre Metadata teilen, die ihre grundlegende Konfiguration wie ID, Signieralgorithmus, Hashing-Methode, öffentlicher Schlüssel usw. haben.
  • Also, basierend auf dem Vertrag zwischen Idp sollten Sie Ihre Anfrage in Ihrer bevorzugten Programmiersprache hashen und signieren.

SP:

  • Sie sollten mit Ihrem öffentlichen Schlüssel verschlüsseln.
  • Sie sollten mit Ihrem privaten Schlüssel singen.
  • Sie sollten Ihre Anfrage mit Base64 verschlüsseln.

IdP:

  • Sie identifizieren sich mit dem öffentlichen Schlüssel in der Anfrage.
  • Sie werden mit verschlüsseltem und signiertem XML antworten.
  • Sie sollten die Antwort entschlüsseln und unsignieren.

Schnelle Links

  1. Offizielles Dokument über SAML 2.0

  2. SAML Online Tool von OneLogin

Aravin 17.10.2017 16:41
quelle