Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Webdienste-Sicherheitsprotokolle bieten Webdiensten Sicherheitsmechanismen, die alle vorhandenen Nachrichtensicherheitsanforderungen eines Unternehmens abdecken. Dieser Abschnitt beschreibt die Details der Windows Communication Foundation (WCF) Version 1.0 (implementiert in der SecurityBindingElement) für die folgenden Webdienst-Sicherheitsprotokolle.
WCF, Version 1, bietet 17 Authentifizierungsmodi, die als Basis für die Webdienste-Sicherheitskonfiguration verwendet werden können. Jeder Modus wird für einen allgemeinen Satz von Bereitstellungsanforderungen optimiert, z. B.:
- Anmeldedaten, die zur Authentifizierung von Client und Dienst verwendet werden
- Nachrichten- oder Transportsicherheitsschutzmechanismen.
- Nachrichtenaustauschmuster
| Authentifizierungsmodus | Clientauthentifizierung | Serverauthentifizierung | Modus |
|---|---|---|---|
| UserNameOverTransport | Benutzername/Kennwort | X509 | Transport |
| ZertifikatÜberTransport | X509 | X509 | Transport |
| KerberosOverTransport. | Fenster | X509 | Transport |
| AusgestelltesTokenÜberTransport | Im Verbund | X509 | Transport |
| SspiNegotiatedOverTransport | Windows Sspi wurde verhandelt | Windows Sspi wurde verhandelt | Transport |
| AnonymFürZertifikat | Keine | X509 | Nachricht |
| BenutzernameFürZertifikat | Benutzername/Kennwort | X509 | Nachricht |
| Gegenseitiges Zertifikat | X509 | X509 | Nachricht |
| MutualCertificateDuplex | X509 | X509 | Nachricht |
| AusgegebenesTokenFürZertifikat | Im Verbund | X509 | Nachricht |
| Kerberos | Fenster | Fenster | Nachricht |
| Ausgestelltes Token | Im Verbund | Im Verbund | Nachricht |
| SspiNegotiated | Windows Sspi wurde verhandelt | Windows Sspi wurde verhandelt | Nachricht |
| AnonymousForSslNegotiated | Keine | X509, TLS-Nego | Nachricht |
| BenutzernameFürSslVerhandelt | Benutzername/Kennwort | X509, TLS-Nego | Nachricht |
| MutualSslVerhandelt | X509 | X509, TLS-Nego | Nachricht |
| Ausgestelltes Token für SSL-Verhandlung | Im Verbund | X509, TLS-Nego | Nachricht |
Endpunkte, die solche Authentifizierungsmodi verwenden, können ihre Sicherheitsanforderungen über WS-SecurityPolicy (WS-SP) ausdrücken. Dieses Dokument beschreibt die Struktur der Sicherheitsheader und der Infrastrukturnachrichten für jeden Authentifizierungsmodus und bietet Richtlinien- und Nachrichtenbeispiele.
WCF setzt WS-SecureConversation ein, um sicheren Sitzungssupport für den Schutz eines mehrteiligen Nachrichtenaustauschs zwischen Anwendungen zu bieten. Weitere Informationen zur Implementierung finden Sie unten unter "Sichere Sitzungen".
Zusätzlich zu den Authentifizierungsmodi bietet WCF Einstellungen zum Kontrollieren der benutzerdefinierten Schutzmechanismen, die für die meisten auf Nachrichtensicherheit basierenden Authentifizierungsmodi gelten, z. B.: Reihenfolge von Signatur gegen Verschlüsselungsvorgängen, Algorithmussammlungen, Schlüsselableitung und Signaturbestätigung.
Die folgenden XML-Präfixe und -Namespaces werden in diesem Dokument verwendet.
| Präfix | Namespace |
|---|---|
| s | https://www.w3.org/2003/05/soap-envelope/ |
| sp | https://schemas.xmlsoap.org/ws/2005/07/securitypolicy/ |
| ein | https://www.w3.org/2005/08/addressing |
| wsse | TBD – OASIS WSS 1,0 URI |
| wsse11 | TBD – OASIS WSS 1.1 URI |
| wsu | TBD – OASIS WSS 1.0 Utility URI |
| Ds | TBD – W3C XMLDSig-URI |
| wst | TBD – WS-Trust 2005/02 URI |
| wssc | TBD – WS-SecureConversation 2005/02 URI |
| wsawen | TBD – WS-Addressing-Richtliniennamespace |
| Wsp | https://schemas.xmlsoap.org/ws/2004/09/policy |
| mssp | https://schemas.xmlsoap.org/ws/2005/07/securitypolicy |
1. Tokenprofile
Webdienst-Sicherheitsspezifikationen stellen Anmeldeinformationen als Sicherheitstoken dar. WCF unterstützt die folgenden Tokentypen:
1.1 BenutzernameToken
WCF befolgt UsernameToken10- und UsernameToken11-Profile mit den folgenden Einschränkungen:
Das R1101 PasswordType-Attribut auf Element UsernameToken\Password MUSS entweder weggelassen werden oder über den Wert #PasswordText (Standard) verfügen.
Man kann #PasswordDigest über Erweiterbarkeit implementieren. Es wurde beobachtet, dass #PasswordDigest oft für einen Kennwortschutzmechanismus gehalten wurde, der sicher genug ist. Aber #PasswordDigest kann nicht als Ersatz für eine Verschlüsselung von UsernameToken dienen. Das primäre Ziel von #PasswordDigest ist ein Schutz vor Replay-Angriffen. In WCF-Authentifizierungsmodi werden Replay-Angriffsbedrohungen durch die Nutzung von Nachrichtensignaturen verringert.
B1102 WCF gibt die Unterelemente "Nonce" und "Created" von "UsernameToken" niemals aus.
Diese Unterelemente sollen die Replay-Erkennung unterstützen. WCF verwendet stattdessen Nachrichtensignaturen.
OASIS WSS SOAP Message Security UsernameToken Profile 1.1 (UsernameToken11) hat die Schlüsselableitung aus dem Kennwort eingeführt.
B1103 Das UsernameToken-Kennwort DARF NICHT für die Schlüsselableitung und daher nicht für kryptografische Vorgänge verwendet werden.
Begründung: Kennwörter werden im Allgemeinen als zu schwach für die Verwendung in kryptografischen Vorgängen angesehen.
1.2 X509-Token
WCF unterstützt X509v3-Zertifikate als Anmeldeinformationstyp und folgt X509TokenProfile1.0 und X509TokenProfile1.1 mit den folgenden Einschränkungen:
R1201 Das ValueType-Attribut auf dem BinarySecurityToken-Element muss den Wert #X509v3 besitzen, wenn es ein X509v3-Zertifikat enthält.
WSS X509 Token Profile 1.0 und 1.1 definieren auch #X509PKIPathv1 und #PKCS7 als Werttypen. WCF unterstützt diese Typen nicht.
R1202 Wenn eine SubjectKeyIdentifier (SKI)-Erweiterung in einem X509-Zertifikat vorliegt, sollte wsse:KeyIdentifier als externe Referenz für das Token verwendet werden, wobei das ValueType-Attribut #X509SubjectKeyIdentifier und sein Inhalt der base64-codierte Wert der SKI-Erweiterung des Zertifikats ist.
SKI-Verweise sind weit verbreitet und haben sich als ein hochgradig interoperabler externer Referenztyp erwiesen.
R1203 Ein externer Verweis auf das X509-Sicherheitstoken SOLLTE NICHT ds:X509IssuerSerial verwenden.
R1204 Wenn X509TokenProfile1.1 verwendet wird, SOLLTE eine externe Referenz auf das X509-Sicherheitstoken den Fingerabdruck, der von WS-Sicherheit 1.1 eingeführt wird, verwenden.
WCF unterstützt X509IssuerSerial. Es gibt jedoch Interoperabilitätsprobleme mit X509IssuerSerial: WCF verwendet eine Zeichenfolge, um zwei Werte von X509IssuerSerial zu vergleichen. Beim Neuordnen von Komponenten des Betreffsnamens und dem Senden eines Verweises auf ein Zertifikat an einen WCF-Dienst wird er möglicherweise nicht gefunden.
1.3 Kerberos-Token
WCF unterstützt mit den folgenden Einschränkungen KerberosTokenProfile1.1 für den Zweck der Windows-Authentifizierung:
R1301 Ein Kerberos-Token muss den Wert eines GSS-ummantelten Kerberos v4 AP_REQ tragen, gemäß der Definition in GSS_API und der Kerberos-Spezifikation, und muss das ValueType-Attribut mit dem Wert #GSS_Kerberosv5_AP_REQ besitzen.
WCF verwendet einen GSS-ummantelten Kerberos AP-REQ und keinen reinen AP-REQ. Hierbei handelt es sich um eine empfohlene Vorgehensweise bezüglich der Sicherheit.
1.4 SAML v1.1 Token
WCF unterstützt WSS SAML Token-Profile 1.0 und 1.1 für SAML-v1.1-Token. Es ist möglich, andere Versionen von SAML-Tokenformaten zu implementieren.
1.5 Sicherheitskontexttoken
WCF unterstützt das in WS-SecureConversation eingeführte Sicherheitskontexttoken (SCT). SCT wird verwendet, um einen Sicherheitskontext darzustellen, der in SecureConversation genauso etabliert ist wie in den Binärverhandlungsprotokollen TLS und SSPI (siehe unten).
2. Allgemeine Nachrichtensicherheitsparameter
2.1 Zeitstempel
Die IncludeTimestamp-Eigenschaft der SecurityBindingElement-Klasse steuert, ob ein Zeitstempel vorhanden ist. WCF serialisiert wsse:TimeStamp immer mit den Feldern wsse:Created und wsse:Expires. Der wsse:TimeStamp wird immer signiert, wenn Signatur verwendet wird.
2.2 Schutzanordnung
WCF unterstützt die Nachrichtenschutzreihenfolgen "Sign Before Encrypt" und "Encrypt Before Sign" (Sicherheitsrichtlinie 1.1). "Sign Before Encrypt" wird u.a. aus den folgenden Gründen empfohlen: Mit "Encrypt Before Sign" geschützte Nachrichten sind Signaturersatzangriffen ausgesetzt, sofern der WS-Sicherheit 1.1 SignatureConfirmation-Mechanismus nicht verwendet wird, und eine Signatur über verschlüsselten Inhalt erschwert die Prüfung.
2.3 Signaturschutz
Wenn Encrypt Before Sign verwendet wird, ist es empfehlenswert, die Signatur zu schützen, um Brute-Force-Angriffe zu verhindern, die versuchen, den verschlüsselten Inhalt oder den Signaturschlüssel zu erraten (besonders dann, wenn ein benutzerdefiniertes Token zusammen mit schwachen Schlüsselmaterialien verwendet wird).
2.4 Algorithmen-Suite
WCF unterstützt alle in der Sicherheitsrichtlinie 1.1 aufgeführten Algorithmussuites.
2.5 Schlüsselableitung
WCF verwendet die "Schlüsselableitung für symmetrische Schlüssel" gemäß ihrer Beschreibung in WS-SecureConversation.
2.6 Signaturbestätigung
Signaturbestätigung kann als Schutz gegen Angriffe von Mittelsmännern eingesetzt werden, um den Signatursatz zu schützen.
2.7 Sicherheitsheader-Layout
Jeder Authentifizierungsmodus beschreibt ein bestimmtes Layout für den Sicherheitsheader. Elemente innerhalb des Sicherheitsheaders sind teilweise geordnet. Um die Reihenfolge der untergeordneten Sicherheitsheaderelemente zu definieren, definiert die WS-Sicherheitsrichtlinie die folgenden Sicherheitsheader-Layoutmodi:
| Layout-Modus | Elementreihenfolge |
|---|---|
| Streng | Dem Sicherheitsheader werden Elemente gemäß den durchnummerierten Layout-Regeln, die im Abschnitt 7.7.1 der Sicherheitsrichtlinien beschrieben werden, und gemäß dem allgemeinen Prinzip der "Deklaration vor der Verwendung" hinzugefügt. |
| Lasch | Die Elemente werden dem Sicherheitsheader in einer beliebigen Reihenfolge hinzugefügt, die der WSS: SOAP Message Security entspricht. |
| LaxTimestampFirst | Ebenso wie Lax, nur dass das erste Element im Sicherheitsheader ein wsse:Timestamp sein muss |
| LaxTimestampLast | Ebenso wie Lax, nur dass das letzte Element im Sicherheitsheader ein wsse:Timestamp sein muss |
WCF unterstützt alle vier Modi für das Sicherheitsheader-Layout. Sicherheitsheader-Struktur und Nachrichtenbeispiele für die Authentifizierungsmodi unten folgen dem "Strict"-Modus.
6. Richtlinien für den Authentifizierungsmodus
Dieser Abschnitt bietet Beispielrichtlinien für jeden Authentifizierungsmodus, zusammen mit Beispielen, die die Sicherheitsheader-Struktur in Nachrichten, die zwischen Client und Dienst ausgetauscht werden, zeigen.
6.1 Transportschutz
WCF stellt fünf Authentifizierungsmodi bereit, die sicheren Transport verwenden, um Nachrichten zu schützen: UserNameOverTransport, CertificateOverTransport, KerberosOverTransport, IssuedTokenOverTransport und SspiNegotiatedOverTransport.
Diese Authentifizierungsmodi werden unter Verwendung der in den Sicherheitsrichtlinien beschriebenen Transportbindung erstellt. Für den UserNameOverTransport-Authentifizierungsmodus ist das UsernameToken ein signiertes unterstützendes Token. Für die anderen Authentifizierungsmodi wird das Token als signiertes bestätigendes Token angezeigt. Anhang C.1.2 und C.1.3 von SecurityPolicy beschreiben detailliert das Sicherheitsheader-Layout. Die folgenden Sicherheitsheader-Beispiele zeigen das strikte Layout für einen bestimmten Authentifizierungsmodus.
Der Wert der "Derived-Keys"-Eigenschaft für die Token ist in allen Fällen "false".
Die Werte der verschiedenen Eigenschaften der Transportbindung sind wie folgt:
Zeitstempel: true
Sicherheitsheader-Layout: Strikt
Algorithmussammlung: Basic256
6.1.1 UsernameOverTransport
Bei diesem Authentifizierungsmodus authentifiziert sich der Client über ein Benutzernamentoken, das auf der SOAP-Schicht als signiertes unterstützendes Token angezeigt wird, das immer vom Initiator an den Empfänger gesendet wird. Der Dienst wird über ein X.509-Zertifikat auf der Transportschicht authentifiziert. Die verwendete Bindung ist eine Transportbindung.
Politik
<wsp:Policy wsu:Id='UsernameOverTransport_policy' >
<wsp:ExactlyOne>
<wsp:All>
<sp:TransportBinding >
<wsp:Policy>
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken RequireClientCertificate='false' />
</wsp:Policy>
</sp:TransportToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp />
</wsp:Policy>
</sp:TransportBinding>
<sp:SignedSupportingTokens >
<wsp:Policy>
<sp:UsernameToken
sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<wsp:Policy>
<sp:WssUsernameToken10 />
</wsp:Policy>
</sp:UsernameToken>
</wsp:Policy>
</sp:SignedSupportingTokens>
<sp:Wss11 >
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
<sp:MustSupportRefThumbprint />
<sp:MustSupportRefEncryptedKey />
</wsp:Policy>
</sp:Wss11>
<sp:Trust10 >
<wsp:Policy>
<sp:MustSupportIssuedTokens />
<sp:RequireClientEntropy />
<sp:RequireServerEntropy />
</wsp:Policy>
</sp:Trust10>
<wsaw:UsingAddressing />
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
Sicherheitsheader-Layout
Anforderung
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<wsse:UsernameToken>
...
</wsse:UsernameToken>
</wsse:Security>
Antwort
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
</wsse:Security>
6.1.2 ZertifikatÜberTransport
Bei diesem Authentifizierungsmodus authentifiziert sich der Client über ein X.509-Zertifikat, das auf der SOAP-Schicht als ausstellendes unterstützendes Token angezeigt wird, das immer vom Initiator an den Empfänger gesendet wird. Der Dienst wird über ein X.509-Zertifikat auf der Transportschicht authentifiziert. Die verwendete Bindung ist eine Transportbindung.
Politik
<wsp:Policy wsu:Id='CertificateOverTransport_policy' >
<wsp:ExactlyOne>
<wsp:All>
<sp:TransportBinding xmlns:sp='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy' >
<wsp:Policy>
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken RequireClientCertificate='false' />
</wsp:Policy>
</sp:TransportToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp />
</wsp:Policy>
</sp:TransportBinding>
<sp:EndorsingSupportingTokens>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<wsp:Policy>
<sp:RequireThumbprintReference />
<sp:WssX509V3Token10 />
</wsp:Policy>
</sp:X509Token>
<sp:SignedParts>
<sp:Header Name='To'
Namespace='http://www.w3.org/2005/08/addressing' />
</sp:SignedParts>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
<sp:MustSupportRefThumbprint />
<sp:MustSupportRefEncryptedKey />
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens />
<sp:RequireClientEntropy />
<sp:RequireServerEntropy />
</wsp:Policy>
</sp:Trust10>
<wsaw:UsingAddressing />
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
Sicherheitsheader-Layout
Anforderung
<wsse:Security s:mustUnderstand="1">
<wse:Timestamp u:Id="_0">
...
</wse:Timestamp>
<wsse:BinarySecurityToken>
...
</wsse:BinarySecurityToken>
<ds:Signature>
...
</ds:Signature>
</wsse:Security>
Antwort
<o:Security>
<u:Timestamp u:Id="_0">
...
</u:Timestamp>
</o:Security>
6.1.3 IssuedTokenOverTransport
In diesem Authentifizierungsmodus authentifiziert sich der Client nicht beim Dienst als solchem, sondern präsentiert ein von einem Sicherheitstokendienst (Security Token Service, STS) ausgegebenes Token und beweist die Kenntnis eines gemeinsam genutzten Schlüssels. Das ausgegebene Token wird auf der SOAP-Schicht als ausstellendes unterstützendes Token angezeigt, das immer vom Initiator an den Empfänger gesendet wird. Der Dienst wird über ein X.509-Zertifikat auf der Transportschicht authentifiziert. Die Bindung ist eine Transportbindung.
Politik
<wsp:Policy wsu:Id='IssuedTokenOverTransport_policy' >
<wsp:ExactlyOne>
<wsp:All>
<sp:TransportBinding >
<wsp:Policy>
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken RequireClientCertificate='false' />
</wsp:Policy>
</sp:TransportToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp />
</wsp:Policy>
</sp:TransportBinding>
<sp:EndorsingSupportingTokens>
<wsp:Policy>
<sp:IssuedToken
sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<sp:RequestSecurityTokenTemplate>
<wst:KeyType>
http://schemas.xmlsoap.org/ws/2005/02/trust/SymmetricKey
</wst:KeyType>
</sp:RequestSecurityTokenTemplate>
<wsp:Policy>
<sp:RequireInternalReference />
</wsp:Policy>
</sp:IssuedToken>
<sp:SignedParts>
<sp:Header Name='To'
Namespace='http://www.w3.org/2005/08/addressing' />
</sp:SignedParts>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
<sp:MustSupportRefThumbprint />
<sp:MustSupportRefEncryptedKey />
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens />
<sp:RequireClientEntropy />
<sp:RequireServerEntropy />
</wsp:Policy>
</sp:Trust10>
<wsaw:UsingAddressing />
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
Sicherheitsheader-Layout
Anforderung
<wsse:Security s:mustUnderstand="1" >
<wsu:Timestamp>
...
</wsu:Timestamp>
<saml:Assertion>
...
</saml:Assertion>
<ds:Signature>
...
</ds:Signature>
</wsse:Security>
Antwort
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
</wsse:Security>
6.1.4 KerberosOverTransport
Mit diesem Authentifizierungsmodus wird der Client mit einem Kerberos-Ticket dem Dienst gegenüber authentifiziert. Das Kerberos-Token wird auf der SOAP-Schicht als bestätigendes unterstützendes Token angezeigt. Der Dienst wird über ein X.509-Zertifikat auf der Transportschicht authentifiziert. Die Bindung ist eine Transportbindung.
Politik
<wsp:Policy wsu:Id='KerberosOverTransport_policy' >
<wsp:ExactlyOne>
<wsp:All>
<sp:TransportBinding>
<wsp:Policy>
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken RequireClientCertificate='false' />
</wsp:Policy>
</sp:TransportToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic128 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp />
</wsp:Policy>
</sp:TransportBinding>
<sp:EndorsingSupportingTokens>
<wsp:Policy>
<sp:KerberosToken
sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Once' >
<wsp:Policy>
<sp:WssGssKerberosV5ApReqToken11 />
</wsp:Policy>
</sp:KerberosToken>
<sp:SignedParts>
<sp:Header Name='To'
Namespace='http://www.w3.org/2005/08/addressing' />
</sp:SignedParts>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
<sp:MustSupportRefThumbprint />
<sp:MustSupportRefEncryptedKey />
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens />
<sp:RequireClientEntropy />
<sp:RequireServerEntropy />
</wsp:Policy>
</sp:Trust10>
<wsaw:UsingAddressing />
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
Sicherheitsheader-Layout
Anforderung
<wsse:Security s:mustUnderstand="1" >
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<wsse:BinarySecurityToken ValueType="...#GSS_Kerberosv5_AP_REQ">
...
</wsse:BinarySecurityToken>
<ds:Signature>
...
</ds:Signature>
</wsse:Security>
Antwort
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
</wsse:Security>
6.1.5 SspiNegotiatedOverTransport
Bei diesem Modus wird ein Aushandlungsprotokoll verwendet, um Client- und Serverauthentifizierung auszuführen. Wenn möglich wird Kerberos verwendet, ansonsten NTLM. Das resultierende SCT wird auf der SOAP-Schicht als ausstellendes unterstützendes Token angezeigt, das immer vom Initiator an den Empfänger gesendet wird. Der Dienst wird zusätzlich auf der Transportschicht über ein X.509-Zertifikat authentifiziert. Die verwendete Bindung ist eine Transportbindung. „SPNEGO" (Aushandlung) beschreibt, wie WCF das binäre SSPI-Aushandlungsprotokoll zusammen mit WS-Trust verwendet. Die Sicherheitsheaderbeispiele in diesem Abschnitt gelten, nachdem der SCT durch den SPNEGO-Handshake eingeführt wurde.
Politik
<wsp:Policy wsu:Id='SspiNegotiatedOverTransport_policy' >
<wsp:ExactlyOne>
<wsp:All>
<sp:TransportBinding>
<wsp:Policy>
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken RequireClientCertificate='false' />
</wsp:Policy>
</sp:TransportToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp />
</wsp:Policy>
</sp:TransportBinding>
<sp:EndorsingSupportingTokens>
<wsp:Policy>
<sp:SpnegoContextToken
sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<wsp:Policy />
</sp:SpnegoContextToken>
<sp:SignedParts>
<sp:Header Name='To'
Namespace='http://www.w3.org/2005/08/addressing' />
</sp:SignedParts>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
<sp:MustSupportRefThumbprint />
<sp:MustSupportRefEncryptedKey />
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens />
<sp:RequireClientEntropy />
<sp:RequireServerEntropy />
</wsp:Policy>
</sp:Trust10>
<wsaw:UsingAddressing />
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
Beispiele für Sicherheitsheader
Sobald das Sicherheitskontext-Token durch den SPNEGO-Handshake unter Verwendung der WS-Trust-Binäraushandlung festgelegt wurde, haben die Anwendungsnachrichten Sicherheitsheader mit der folgenden Struktur.
Anforderung
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<wssc:SecurityContextToken u:Id="uuid-2202746a-7725-453d-8747-809cb718dab0-29" >
...
</wssc:SecurityContextToken>
<ds:Signature>
...
</ds:Signature>
</wsse:Security>
Antwort
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
</wsse:Security>
6.2 Verwenden von X.509-Zertifikaten zur Dienstauthentifizierung
In diesem Abschnitt werden die folgenden Authentifizierungsmodi beschrieben: MutualCertificate WSS1.0, Mutual CertificateDuplex, MutualCertificate WSS1.1, AnonymousForCertificate, UserNameForCertificate und IssuedTokenForCertificate.
6.2.1 MutualCertificate WSS1.0
Bei diesem Authentifizierungsmodus authentifiziert sich der Client über ein X.509-Zertifikat, das auf der SOAP-Schicht als das Initiatortoken angezeigt wird. Der Dienst wird ebenfalls über ein X.509-Zertifikat authentifiziert.
Die verwendete Bindung ist eine asymmetrische Bindung mit den folgenden Eigenschaftswerten:
Initiator-Token: das X.509-Zertifikat des Clients, wobei der Inclusion-Modus auf .../IncludeToken/AlwaysToRecipient festgelegt ist
Empfängertoken: das X.509-Zertifikat des Servers, wobei der Inclusion-Modus auf .../IncludeToken/Never festgelegt ist
Tokenschutz: False
Ganze Header- und Textsignaturen: True
Schutzreihenfolge: SignierenVorVerschlüsseln
Signaturverschlüsselung: True
Politik
<wsp:Policy wsu:Id='MutualCertificate_WSS10_policy' >
<wsp:ExactlyOne>
<wsp:All>
<sp:AsymmetricBinding>
<wsp:Policy>
<sp:InitiatorToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<wsp:Policy>
<sp:WssX509V3Token10 />
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:InitiatorToken>
<sp:RecipientToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never' >
<wsp:Policy>
<sp:WssX509V3Token10 />
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:RecipientToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp />
<sp:EncryptSignature />
<sp:OnlySignEntireHeadersAndBody />
</wsp:Policy>
</sp:AsymmetricBinding>
<sp:Wss10>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
</wsp:Policy>
</sp:Wss10>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens />
<sp:RequireClientEntropy />
<sp:RequireServerEntropy />
</wsp:Policy>
</sp:Trust10>
<wsaw:UsingAddressing />
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
Sicherheitsheaderbeispiele: SignBeforeEncrypt, EncryptSignature
Anforderung
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<wsse:BinarySecurityToken>
...
</wsse:BinarySecurityToken>
<xenc:EncryptedKey>
...
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</xenc:EncryptedKey>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Antwort
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<xenc:EncryptedKey>
...
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</xenc:EncryptedKey>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Sicherheitsheaderbeispiele: EncryptBeforeSign
Anforderung
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<wsse:BinarySecurityToken>
...
</wsse:BinarySecurityToken>
<xenc:EncryptedKey>
...
</xenc:EncryptedKey>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
Antwort
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<xenc:EncryptedKey>
...
</xenc:EncryptedKey>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
6.2.2 MutualCertificateDuplex
Bei diesem Authentifizierungsmodus authentifiziert sich der Client über ein X.509-Zertifikat, das auf der SOAP-Schicht als das Initiatortoken angezeigt wird. Der Dienst wird ebenfalls über ein X.509-Zertifikat authentifiziert.
Die verwendete Bindung ist eine asymmetrische Bindung mit den folgenden Eigenschaftswerten:
Initiator-Token: das X.509-Zertifikat des Clients, wobei der Inclusion-Modus auf .../IncludeToken/AlwaysToRecipient festgelegt ist
Empfänger-Token: das X.509-Zertifikat des Servers, wobei der Inclusion-Modus auf .../IncludeToken/AlwaysToInitiator festgelegt ist
Tokenschutz: False
Ganze Header- und Textsignaturen: True
Schutzreihenfolge: SignierenVorVerschlüsseln
Signaturverschlüsselung: True
Politik
<wsp:Policy wsu:Id='MutualCertificateDuplex_policy' >
<wsp:ExactlyOne>
<wsp:All>
<sp:AsymmetricBinding>
<wsp:Policy>
<sp:InitiatorToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<wsp:Policy>
<sp:WssX509V3Token10 />
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:InitiatorToken>
<sp:RecipientToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToInitiator' >
<wsp:Policy>
<sp:WssX509V3Token10 />
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:RecipientToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp />
<sp:EncryptSignature />
<sp:OnlySignEntireHeadersAndBody />
</wsp:Policy>
</sp:AsymmetricBinding>
<sp:Wss10>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
</wsp:Policy>
</sp:Wss10>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens />
<sp:RequireClientEntropy />
<sp:RequireServerEntropy />
</wsp:Policy>
</sp:Trust10>
<wsaw:UsingAddressing />
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
Sicherheitsheaderbeispiele: SignBeforeEncrypt, EncryptSignature
Anforderung und Antwort
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<wsse:BinarySecurityToken>
...
</wsse:BinarySecurityToken>
<xenc:EncryptedKey>
...
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</xenc:EncryptedKey>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Sicherheitsheaderbeispiele: EncryptBeforeSign
Anforderung und Antwort
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<wsse:BinarySecurityToken>
...
</wsse:BinarySecurityToken>
<xenc:EncryptedKey>
...
</xenc:EncryptedKey>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
6.2.3 Verwenden von SymmetricBinding mit X.509-Dienstauthentifizierung
"WSS10" bot lediglich eingeschränkten Support für Szenarien mit X509-Token. Beispielsweise gab es keine Möglichkeit, Signatur- und Verschlüsselungsschutz für Nachrichten bereitzustellen, die nur Dienst-X509-Token verwenden. "WSS11" hat die Verwendung von EncryptedKey als symmetrisches Token eingeführt. Jetzt könnte ein temporärer Schlüssel, der für das X.509-Zertifikat verschlüsselt wurde, sowohl für den Anforderungs- als auch für den Antwortnachrichtenschutz verwendet werden. Die unten in Abschnitt 6.4 beschriebenen Authentifizierungsmodi verwenden dieses Muster.
Die WS-Sicherheitsrichtlinie beschreibt dieses Muster unter Verwendung von SymmetricBinding mit dem Dienst-X509-Token als Schutztoken.
Die Authentifizierungsmodi AnonymousForCertificate, UsernameForCertificate, MutualCertificate WSS11 und IssuedTokenForCertificate verwenden alle eine ähnliche Instanz von sp:SymmetricBinding mit den folgenden Eigenschaftswerten:
Schutztoken: X509-Zertifikat des Servers, Einschlussmodus auf „.../IncludeToken/Never“ festgelegt, Tokenschutz: Falsch.
Ganze Header- und Textsignaturen: True
Schutzreihenfolge: SignierenVorVerschlüsseln
Signaturverschlüsselung: True
Die oben erwähnten Authentifizierungsmodi unterscheiden sich nur durch die unterstützenden Token, die sie verwenden. AnonymousForCertificate besitzt keine unterstützenden Token, MutualCertificate WSS 1.1 besitzt das X509-Zertifikat des Clients als unterzeichnendes unterstützendes Token, UserNameForCertificate besitzt ein Benutzernamentoken als signiertes unterstützendes Token und IssuedTokenForCertificate besitzt das ausgestellte Token als unterzeichnendes unterstützendes Token.
Politik
Symmetrische Bindung
<wsp:Policy wsu:Id='SymmetricCert_policy' >
<wsp:ExactlyOne>
<wsp:All>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never' >
<wsp:Policy>
<sp:RequireDerivedKeys />
<sp:RequireThumbprintReference />
<sp:WssX509V3Token10 />
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp />
<sp:EncryptSignature />
<sp:OnlySignEntireHeadersAndBody />
</wsp:Policy>
</sp:SymmetricBinding>
<!-- Supporting Token Assertions appear here -->
...
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
<sp:MustSupportRefThumbprint />
<sp:MustSupportRefEncryptedKey />
<sp:RequireSignatureConfirmation />
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens />
<sp:RequireClientEntropy />
<sp:RequireServerEntropy />
</wsp:Policy>
</sp:Trust10>
<wsaw:UsingAddressing />
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
6.2.4 AnonymousForCertificate
Mit diesem Authentifizierungsmodus ist der Client anonym, und der Dienst wird mit einem X.509-Zertifikat authentifiziert. Die verwendete Bindung ist eine Instanz einer symmetrischen Bindung gemäß der Beschreibung im Abschnitt 6.4.2.
Politik
Weitere Informationen zu den Bindungen finden Sie unter "Richtlinie" im obigen Abschnitt 6.2.3.
Sicherheitsheaderbeispiele: SignBeforeEncrypt, EncryptSignature
Anforderung
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<xenc:EncryptedKey>
...
</xenc:EncryptedKey>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Antwort
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Sicherheitsheaderbeispiele: EncryptBeforeSign
Anforderung
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<xenc:EncryptedKey>
...
</xenc:EncryptedKey>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
Antwort
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wsse11:SignatureConfirmation />
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
6.2.5 BenutzerNameFürZertifikat
Bei diesem Authentifizierungsmodus authentifiziert sich der Client dem Dienst gegenüber mit einem Benutzernamentoken, das auf der SOAP-Schicht als signiertes unterstützendes Token angezeigt wird. Der Dienst wird über ein X.509-Zertifikat am Client authentifiziert. Die verwendete Bindung ist eine symmetrische Bindung, deren Schutztoken ein Schlüssel ist, der vom Client generiert und über den öffentlichen Schlüssel des Diensts verschlüsselt wurde.
Politik
Weitere Informationen zu den Bindungen finden Sie unter "Richtlinie" im obigen Abschnitt 6.2.3.
Signiertes unterstützendes Token
<sp:SignedSupportingTokens>
<wsp:Policy>
<sp:UsernameToken sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<wsp:Policy>
<sp:WssUsernameToken10 />
</wsp:Policy>
</sp:UsernameToken>
</wsp:Policy>
</sp:SignedSupportingTokens>
Sicherheitsheaderbeispiele: SignBeforeEncrypt, EncryptSignature
Anforderung
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<xenc:EncryptedKey>
...
</xenc:EncryptedKey>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Antwort
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Sicherheitsheaderbeispiele: EncryptBeforeSign
Anforderung
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<xenc:EncryptedKey>
...
</xenc:EncryptedKey>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
Antwort
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
6.2.6 MutualCertificate (WSS 1.1)
Bei diesem Authentifizierungsmodus authentifiziert sich der Client über ein X.509-Zertifikat, das auf der SOAP-Schicht als ausstellendes unterstützendes Token angezeigt wird. Der Dienst wird ebenfalls über ein X.509-Zertifikat authentifiziert. Die verwendete Bindung ist eine symmetrische Bindung, deren Schutztoken ein Schlüssel ist, der vom Client generiert und über den öffentlichen Schlüssel des Diensts verschlüsselt wurde.
Politik
Nähere Informationen zu den Bindungsdetails finden Sie in Abschnitt 6.2.3 der Richtlinie.
Befürwortendes unterstützendes Token
<sp:EndorsingSupportingTokens>
<wsp:Policy>
<sp:X509Token sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<wsp:Policy>
<sp:RequireThumbprintReference />
<sp:WssX509V3Token10 />
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
Sicherheitsheaderbeispiele: SignBeforeEncrypt, EncryptSignature
Anforderung
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<xenc:EncryptedKey>
...
</xenc:EncryptedKey>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<wsse:BinarySecurityToken>
...
</wsse:BinarySecurityToken>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Antwort
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<wsse:BinarySecurityToken>
...
</wsse:BinarySecurityToken>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Sicherheitsheaderbeispiele: EncryptBeforeSign
Anforderung
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<xenc:EncryptedKey>
...
</xenc:EncryptedKey>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wsse:BinarySecurityToken>
...
</wsse:BinarySecurityToken>
<ds:Signature>
...
</ds:Signature>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
Antwort
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<xenc:EncryptedKey>
...
</xenc:EncryptedKey>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wsse11:SignatureConfirmation />
<wsse11:SignatureConfirmation />
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
6.2.7 ReleasedTokenFürZertifikat
In diesem Authentifizierungsmodus authentifiziert sich der Client nicht direkt beim Dienst, sondern präsentiert stattdessen ein Token, das von einem Sicherheitstokendienst (Security Token Service, STS) ausgegeben wird, und weist die Kenntnis eines geteilten Schlüssels nach. Das ausgestellte Token wird auf der SOAP-Schicht als bestätigendes unterstützendes Token angezeigt. Der Dienst wird über ein X.509-Zertifikat am Client authentifiziert. Die verwendete Bindung ist eine symmetrische Bindung, deren Schutztoken ein Schlüssel ist, der vom Client generiert und über den öffentlichen Schlüssel des Diensts verschlüsselt wurde.
Politik
Siehe „Richtlinie“ in Abschnitt 6.2.3 oben für Details zu Bindungen.
Befürwortendes unterstützendes Token
<sp:EndorsingSupportingTokens>
<wsp:Policy>
<sp:IssuedToken sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<sp:RequestSecurityTokenTemplate>
<wst:KeyType>
http://schemas.xmlsoap.org/ws/2005/02/trust/SymmetricKey
</wst:KeyType>
</sp:RequestSecurityTokenTemplate>
<wsp:Policy>
<sp:RequireDerivedKeys />
<sp:RequireInternalReference />
</wsp:Policy>
</sp:IssuedToken>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
Sicherheitsheaderbeispiele: SignBeforeEncrypt, EncryptSignature
Anforderung
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<xenc:EncryptedKey>
...
</xenc:EncryptedKey>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<saml:Assertion>
...
</saml:Assertion>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Antwort
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Sicherheitsheaderbeispiele: EncryptBeforeSign
Anforderung
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<xenc:EncryptedKey>
...
</xenc:EncryptedKey>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<saml:Assertion>
...
</saml:Assertion>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
Antwort
<wsse:Security>
<wsu:Timestamp u:Id="_0">
...
</wsu:Timestamp>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wssc:DerivedKeyToken>
...
</wssc:DerivedKeyToken>
<wsse11:SignatureConfirmation />
<wsse11:SignatureConfirmation />
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
6.3 Kerberos
Mit diesem Authentifizierungsmodus wird der Client mit einem Kerberos-Ticket dem Dienst gegenüber authentifiziert. Dieses gleiche Ticket bietet auch Serverauthentifizierung. Die verwendete Bindung ist eine symmetrische Bindung mit den folgenden Eigenschaften:
Schutztoken: Kerberos-Ticket, Einschlussmodus ist festgelegt auf „.../IncludeToken/Once“, Tokenschutz: falsch
Ganze Header- und Textsignaturen: True
Schutzreihenfolge: SignierenVorVerschlüsseln
Signaturverschlüsselung: True
Politik
<wsp:Policy wsu:Id='Kerberos_policy' >
<wsp:ExactlyOne>
<wsp:All>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:KerberosToken sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Once' >
<wsp:Policy>
<sp:RequireDerivedKeys />
<sp:WssGssKerberosV5ApReqToken11 />
</wsp:Policy>
</sp:KerberosToken>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic128 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp />
<sp:EncryptSignature />
<sp:OnlySignEntireHeadersAndBody />
</wsp:Policy>
</sp:SymmetricBinding>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
<sp:MustSupportRefThumbprint />
<sp:MustSupportRefEncryptedKey />
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens />
<sp:RequireClientEntropy />
<sp:RequireServerEntropy />
</wsp:Policy>
</sp:Trust10>
<wsaw:UsingAddressing />
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
Sicherheitsheaderbeispiele: SignBeforeEncrypt, EncryptSignature
Anforderung
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsse:BinarySecurityToken>
...
</wsse:BinarySecurityToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Antwort
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Sicherheitsheaderbeispiele: EncryptBeforeSign
Anforderung
<wsse:Security>
TBD
</wsse:Security>
Antwort
<wsse:Security>
TBD
</wsse:Security>
6.4 IssuedToken (ausgestelltes Token)
Bei diesem Authentifizierungsmodus authentifiziert sich der Client nicht direkt beim Dienst. Stattdessen präsentiert der Client ein von einem Security Token Service (STS) ausgegebenes Token und weist die Kenntnis eines gemeinsamen Schlüssels nach. Der Dienst wird dem Client gegenüber nicht authentifiziert. Stattdessen verschlüsselt STS den geteilten Schlüssel als Teil des ausgestellten Tokens, sodass nur der Dienst den Schlüssel entschlüsseln kann. Die verwendete Bindung ist eine symmetrische Bindung mit den folgenden Eigenschaften:
Schutztoken: Ausgestelltes Token, Inklusionsmodus festgelegt auf „.../IncludeToken/AlwaysToRecipient“, Tokenschutz: False
Ganze Header- und Textsignaturen: True
Schutzreihenfolge: SignierenVorVerschlüsseln
Signaturverschlüsselung: True
Politik
<wsp:Policy wsu:Id='CustomBinding_ISimple3_policy' >
<wsp:ExactlyOne>
<wsp:All>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:IssuedToken sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<sp:RequestSecurityTokenTemplate>
<wst:KeyType>
http://schemas.xmlsoap.org/ws/2005/02/trust/SymmetricKey
</wst:KeyType>
</sp:RequestSecurityTokenTemplate>
<wsp:Policy>
<sp:RequireDerivedKeys />
<sp:RequireInternalReference />
</wsp:Policy>
</sp:IssuedToken>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp />
<sp:EncryptSignature />
<sp:OnlySignEntireHeadersAndBody />
</wsp:Policy>
</sp:SymmetricBinding>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
<sp:MustSupportRefThumbprint />
<sp:MustSupportRefEncryptedKey />
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens />
<sp:RequireClientEntropy />
<sp:RequireServerEntropy />
</wsp:Policy>
</sp:Trust10>
<wsaw:UsingAddressing />
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
Sicherheitsheaderbeispiele: SignBeforeEncrypt, EncryptSignature
Anforderung
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<saml:Assertion>
...
</saml:Assertion>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Antwort
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Sicherheitsheaderbeispiele: EncryptBeforeSign
Anforderung
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
<saml:Assertion>
...
</saml:Assertion>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
Antwort
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
6.5 Verwenden von SslNegotiated zur Dienstauthentifizierung
Dieser Abschnitt beschreibt eine Gruppe von Authentifizierungsmodi, die eine symmetrische Bindung verwenden, deren Schutztoken ein Sicherheitskontexttoken über WS-SecureConversation (WS-SC) ist, dessen Schlüsselwert ausgeführt wird, indem das TLS-Protokoll über WS-Trust (WS-T) RST/RSTR-Nachrichten ausgeführt wird. Genaue Informationen über die TLS-Handshake-Implementierung mit WS-Trust werden in TLSNEGO beschrieben. Hier, in diesen Nachrichtenbeispielen, werden wir annehmen, dass SCT mit einem angeschlossenen Sicherheitskontext bereits über einen Handshake etabliert ist.
Die verwendete Bindung ist eine symmetrische Bindung mit den folgenden Eigenschaften:
Schutztoken: SslContextToken, Einschlussmodus ist eingestellt auf „.../IncludeToken/Never“, Tokenschutz: false
Ganze Header- und Textsignaturen: True
Schutzreihenfolge: SignierenVorVerschlüsseln
Signaturverschlüsselung: True
6.5.1 Richtlinie für SslNegotiated-Dienstauthentifizierung
Die Richtlinien für alle Authentifizierungsmodi in diesem Abschnitt ähneln sich und unterscheiden sich nur durch die spezifischen signierten Unterstützer- oder Befürwortungs-Tokens, die verwendet werden.
<wsp:Policy wsu:Id='SslNegotiated_policy' >
<wsp:ExactlyOne>
<wsp:All>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<mssp:SslContextToken sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient'>
<wsp:Policy>
<sp:RequireDerivedKeys />
</wsp:Policy>
</mssp:SslContextToken>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp />
<sp:EncryptSignature />
<sp:OnlySignEntireHeadersAndBody />
</wsp:Policy>
</sp:SymmetricBinding>
<!-- Supporting token assertions go here -->
..
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
<sp:MustSupportRefThumbprint />
<sp:MustSupportRefEncryptedKey />
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens />
<sp:RequireClientEntropy />
<sp:RequireServerEntropy />
</wsp:Policy>
</sp:Trust10>
<wsaw:UsingAddressing />
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
6.5.2 AnonymousForSslNegotiated
Mit diesem Authentifizierungsmodus ist der Client anonym, und der Dienst wird mit einem X.509-Zertifikat authentifiziert. Die verwendete Bindung ist eine Instanz einer symmetrischen Bindung, wie in 6.5.1 beschrieben.
Politik
Siehe Richtlinie in Abschnitt 6.5.1 für Details zu den Bindungen.
Sicherheitsheaderbeispiele: SignBeforeEncrypt, EncryptSignature
Anforderung
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:SecurityContextToken>
...
</wsc:SecurityContextToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Antwort
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Sicherheitsheaderbeispiele: EncryptBeforeSign
Anforderung
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:SecurityContextToken>
...
</wsc:SecurityContextToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
Antwort
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
6.5.3 BenutzernameFürSslVerhandelt
Bei diesem Authentifizierungsmodus wird der Client über ein Benutzernamentoken authentifiziert, das auf der SOAP-Schicht als signiertes unterstützendes Token angezeigt wird. Der Dienst wird über ein X.509-Zertifikat authentifiziert. Die verwendete Bindung ist eine Instanz einer symmetrischen Bindung gemäß der Beschreibung im Abschnitt 6.5.1.
Politik
Siehe oben Abschnitt 6.5.1 für Details zu den Bindungen.
Signiertes unterstützendes Token
<sp:SignedSupportingTokens>
<wsp:Policy>
<sp:UsernameToken sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<wsp:Policy>
<sp:WssUsernameToken10 />
</wsp:Policy>
</sp:UsernameToken>
</wsp:Policy>
</sp:SignedSupportingTokens>
Sicherheitsheaderbeispiele: SignBeforeEncrypt, EncryptSignature
Anforderung
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:SecurityContextToken>
...
</wsc:SecurityContextToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Antwort
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Sicherheitsheaderbeispiele: EncryptBeforeSign
Anforderung
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:SecurityContextToken>
...
</wsc:SecurityContextToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
Antwort
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
6.5.4 IssuedTokenForSslNegotiated
In diesem Authentifizierungsmodus authentifiziert sich der Client nicht beim Dienst, sondern präsentiert ein von einem Sicherheitstokendienst (Security Token Service, STS) ausgestelltes Token und weist die Kenntnis eines freigegebenen Schlüssels nach. Das ausgestellte Token wird auf der SOAP-Schicht als bestätigendes unterstützendes Token angezeigt. Der Dienst wird über ein X.509-Zertifikat authentifiziert. Die verwendete Bindung ist eine Instanz einer symmetrischen Bindung, wie in 6.5.1 beschrieben.
Politik
Siehe oben Abschnitt 6.5.1 für Details zu den Bindungen.
Befürwortendes unterstützendes Token
<sp:EndorsingSupportingTokens>
<wsp:Policy>
<sp:IssuedToken sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<sp:RequestSecurityTokenTemplate>
<wst:KeyType>
http://schemas.xmlsoap.org/ws/2005/02/trust/SymmetricKey
</wst:KeyType>
</sp:RequestSecurityTokenTemplate>
<wsp:Policy>
<sp:RequireDerivedKeys />
<sp:RequireInternalReference />
</wsp:Policy>
</sp:IssuedToken>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
Sicherheitsheaderbeispiele: SignBeforeEncrypt, EncryptSignature
Anforderung
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:SecurityContextToken>
...
</wsc:SecurityContextToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<saml:Assertion>
...
</saml:Assertion>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Antwort
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Sicherheitsheaderbeispiele: EncryptBeforeSign
Anforderung
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:SecurityContextToken>
...
</wsc:SecurityContextToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<saml:Assertion>
...
</saml:Assertion>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
Antwort
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsse11:SignatureConfirmation />
<wsse11:SignatureConfirmation />
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
6.5.5 MutualSslNegotiated
Bei diesem Authentifizierungsmodus werden sowohl der Client als auch der Dienst mit X.509-Zertifikaten authentifiziert. Die verwendete Bindung ist eine Instanz einer symmetrischen Bindung, wie in 6.5.1 beschrieben.
Politik
Siehe oben Abschnitt 6.5.1 für Details zu den Bindungen.
Befürwortendes unterstützendes Token
<sp:EndorsingSupportingTokens>
<wsp:Policy>
<sp:X509Token sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<wsp:Policy>
<sp:RequireThumbprintReference />
<sp:WssX509V3Token10 />
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
Sicherheitsheaderbeispiele: SignBeforeEncrypt, EncryptSignature
Anforderung
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:SecurityContextToken>
...
</wsc:SecurityContextToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Antwort
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Sicherheitsheaderbeispiele: EncryptBeforeSign
Anforderung
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:SecurityContextToken>
...
</wsc:SecurityContextToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
Antwort
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
6.6 SspiNegotiated
Bei diesem Authentifizierungsmodus wird ein Aushandlungsprotokoll verwendet, um Client- und Serverauthentifizierung auszuführen. Wenn möglich wird Kerberos verwendet, ansonsten NTLM. Die verwendete Bindung ist eine symmetrische Bindung mit den folgenden Eigenschaften:
Schutztoken: SpnegoContextToken, Einschlussmodus festgelegt auf „.../IncludeToken/AlwaysToRecipient“, Tokenschutz: falsch
Ganze Header- und Textsignaturen: True
Schutzreihenfolge: SignierenVorVerschlüsseln
Signaturverschlüsselung: True
Politik
<wsp:Policy wsu:Id='CustomBinding_ISimple13_policy' >
<wsp:ExactlyOne>
<wsp:All>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:SpnegoContextToken sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<wsp:Policy>
<sp:RequireDerivedKeys />
</wsp:Policy>
</sp:SpnegoContextToken>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp />
<sp:EncryptSignature />
<sp:OnlySignEntireHeadersAndBody />
</wsp:Policy>
</sp:SymmetricBinding>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
<sp:MustSupportRefThumbprint />
<sp:MustSupportRefEncryptedKey />
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens />
<sp:RequireClientEntropy />
<sp:RequireServerEntropy />
</wsp:Policy>
</sp:Trust10>
<wsaw:UsingAddressing />
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
Sicherheitsheaderbeispiele: SignBeforeEncrypt, EncryptSignature
Anforderung
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:SecurityContextToken>
...
</wsc:SecurityContextToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Antwort
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Sicherheitsheaderbeispiele: EncryptBeforeSign
Anforderung
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:SecurityContextToken>
...
</wsc:SecurityContextToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
Antwort
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
6.7 SecureConversation
Die verwendete Bindung ist eine symmetrische Bindung, wobei das Schutztoken ein SCT über WS-SecureConversation (WS-SC) ist. Das SCT wird über WS-Trust (WS-Trust) oder WS-SecureConversation (WS-SC) gemäß einer eingebetteten Bindung ausgehandelt, die selbst eine symmetrische Bindung ist und ein Verhandlungsprotokoll verwendet. Das Aushandlungsprotokoll verwendet Kerberos, um, falls möglich, Client- und Serverauthentifizierung auszuführen. Wenn Kerberos nicht verwendet werden kann, greift es wieder auf NTLM zurück.
Politik
<wsp:Policy wsu:Id='SecureConversation_policy' >
<wsp:ExactlyOne>
<wsp:All>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:SecureConversationToken sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<wsp:Policy>
<sp:RequireDerivedKeys />
<sp:BootstrapPolicy>
<wsp:Policy>
<sp:SignedParts>
<sp:Body />
<sp:Header Name='To' Namespace='http://www.w3.org/2005/08/addressing' />
<sp:Header Name='From' Namespace='http://www.w3.org/2005/08/addressing' />
<sp:Header Name='FaultTo' Namespace='http://www.w3.org/2005/08/addressing' />
<sp:Header Name='ReplyTo' Namespace='http://www.w3.org/2005/08/addressing' />
<sp:Header Name='MessageID' Namespace='http://www.w3.org/2005/08/addressing' />
<sp:Header Name='RelatesTo' Namespace='http://www.w3.org/2005/08/addressing' />
<sp:Header Name='Action' Namespace='http://www.w3.org/2005/08/addressing' />
</sp:SignedParts>
<sp:EncryptedParts>
<sp:Body />
</sp:EncryptedParts>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:SpnegoContextToken sp:IncludeToken='http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient' >
<wsp:Policy>
<sp:RequireDerivedKeys />
</wsp:Policy>
</sp:SpnegoContextToken>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp />
<sp:EncryptSignature />
<sp:OnlySignEntireHeadersAndBody />
</wsp:Policy>
</sp:SymmetricBinding>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
<sp:MustSupportRefThumbprint />
<sp:MustSupportRefEncryptedKey />
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens />
<sp:RequireClientEntropy />
<sp:RequireServerEntropy />
</wsp:Policy>
</sp:Trust10>
</wsp:Policy>
</sp:BootstrapPolicy>
</wsp:Policy>
</sp:SecureConversationToken>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp />
<sp:EncryptSignature />
<sp:OnlySignEntireHeadersAndBody />
</wsp:Policy>
</sp:SymmetricBinding>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
<sp:MustSupportRefThumbprint />
<sp:MustSupportRefEncryptedKey />
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens />
<sp:RequireClientEntropy />
<sp:RequireServerEntropy />
</wsp:Policy>
</sp:Trust10>
<wsaw:UsingAddressing />
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
Sicherheitsheaderbeispiele: SignBeforeEncrypt, EncryptSignature
Anforderung
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:SecurityContextToken>
...
</wsc:SecurityContextToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Antwort
<wsse:Security s:mustUnderstand="1">
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
<xenc:EncryptedData>
...
</xenc:EncryptedData>
</wsse:Security>
Sicherheitsheaderbeispiele: EncryptBeforeSign
Anforderung
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:SecurityContextToken>
...
</wsc:SecurityContextToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>
Antwort
<wsse:Security>
<wsu:Timestamp>
...
</wsu:Timestamp>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<wsc:DerivedKeyToken>
...
</wsc:DerivedKeyToken>
<ds:Signature>
...
</ds:Signature>
<xenc:ReferenceList>
...
</xenc:ReferenceList>
</wsse:Security>