Client-X509-Token als bestätigendes Token und symmetrisches Server-X509-Token für Nachrichtenschutz
Die X509-Zertifikate für Client und Server werden für die gegenseitige Authentifizierung und den Nachrichtenschutz verwendet. Beim Nachrichtenschutz über ein symmetrisches X509-Token wird ein ephemerer Schlüssel zum Signieren und Verschlüsseln der Nachricht erstellt. Der ephemere Schlüssel wird über das öffentliche Zertifikat des Empfängers verschlüsselt. Ein X509-Token mit dem Fingerabdruck des öffentlichen Zertifikats des Clients wird in die Nachricht eingeschlossen. Die Nachrichtensignatur wird mit dem privaten Schlüssel des Clients signiert.
Diese Richtlinienschablone wird am besten verwendet, wenn der Client sich mit einem X509-Clientzertifikat und einem Benutzernamenstoken beim Service authentifizieren muss.
Die folgende Richtlinie zeigt ein Client-X509-Token als bestätigendes Token (EndorsingToken) und ein symmetrisches Server-X509-Token
für Nachrichtenschutz:
<wsp:Policy wsu:Id="X509SymmetricAndEndorsing">
<wsp:ExactlyOne>
<wsp:All>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Never">
<wsp:Policy>
<sp:RequireDerivedKeys />
<sp:RequireThumbprintReference />
<sp:WssX509V3Token11 />
</wsp:Policy>
</sp:X509Token>
</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:OnlySignEntireHeadersAndBody />
</wsp:Policy>
</sp:SymmetricBinding>
<sp:EncryptedParts>
<sp:Body />
</sp:EncryptedParts>
<sp:SignedParts>
<sp:Body />
</sp:SignedParts>
<sp:EndorsingSupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:RequireThumbprintReference />
<sp:WssX509V3Token11 />
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
<sp:MustSupportRefThumbprint />
<sp:MustSupportRefEncryptedKey />
<sp:RequireSignatureConfirmation />
</wsp:Policy>
</sp:Wss11>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
In diesem Beispiel werden die folgenden Namespaces verwendet:
- xmlns:wsp="http://www.w3.org/ns/ws-policy"
- xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
- xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"