Heim >Backend-Entwicklung >C++ >Wie kann ich mit C# eine SAML-Assertion in einer SOAP-Nachricht generieren und digital signieren?
Dieser C#-Code demonstriert das Generieren einer SAML-Assertion, das digitale Signieren dieser und das Einbetten in eine SOAP-Nachricht. Lassen Sie uns die Funktionalität des Codes Schritt für Schritt untersuchen:
SOAP-Nachrichtenerstellung (CreateSoap
Methode):
Die CreateSoap
-Methode erstellt das grundlegende SOAP-Nachrichten-Framework. Dazu gehört die Erstellung der SOAP-Hülle, des Headers und des Bodys. Wichtige Elemente wie die To
- und Action
-Adressen, MessageID
und der wsse:Security
-Header werden hinzugefügt. Der wsse:Security
-Header fungiert als Platzhalter für die später hinzugefügte, signierte SAML-Assertion.
SAML-Assertion-Signierung (SignXmlWithCertificate
Methode):
Die SignXmlWithCertificate
-Methode übernimmt den digitalen Signaturprozess für die SAML-Behauptung. Als Eingabe werden das Assertion-Element und ein X509Certificate2-Objekt verwendet. Der Signiervorgang umfasst:
SignedXml
-Objekts, initialisiert mit dem Assertion-Element.SigningKey
-Eigenschaft von SignedXml
auf den privaten Schlüssel des Zertifikats.Reference
-Objekts und Hinzufügen zu SignedXml
. Die Referenz verweist auf die zu signierenden Daten (hier eine leere Zeichenfolge, die die gesamte Behauptung angibt).KeyInfo
-Objekts und Hinzufügen einer KeyInfoX509Data
-Klausel, die das Zertifikat enthält.ComputeSignature
und Abrufen ihrer XML-Darstellung über GetXml
.Betreffelementerstellung (CreateSubject
Methode):
Die Methode CreateSubject
fügt das Element <subject>
zur SAML-Behauptung hinzu. Dieses Element enthält themenbezogene Informationen, wie z. B. Name und Bestätigungsmethode. In diesem Beispiel sind die Betreffdetails fest codiert.
Integration: Signierte Behauptung und SOAP-Anfrage:
Nach der Signierung und Betrefferstellung wird die signierte Behauptung in den wsse:Security
-Header integriert. Der SOAP-Körper, der derzeit Platzhalterdaten enthält, kann durch die tatsächliche SOAP-Nutzlast ersetzt werden.
Speichern des signierten XML:
Abschließend wird das vollständige, digital signierte XML-Dokument in einer Datei gespeichert.
Anwendung:
Um diesen Code zu verwenden:
pfxpath
) durch den Pfad zu Ihrem Zertifikat.xmlBytes
) die richtige XML-Anfrage enthält.Die resultierende XML-Datei enthält die digital signierte SAML-Behauptung, die in die SOAP-Nachricht eingebettet ist. Diese Ausgabe kann zur Authentifizierung oder Autorisierung mit einem Remote-System verwendet werden.
Das obige ist der detaillierte Inhalt vonWie kann ich mit C# eine SAML-Assertion in einer SOAP-Nachricht generieren und digital signieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!