Schlüsseldaten
Im Sicherheitsheader einer SOAP-Nachricht wird mit einem Element des Typs <ds:KeyInfo> (Schlüsseldaten) beschrieben, wo sich ein Schlüssel oder Zertifikat befindet, der bzw. das zum Verarbeiten eines oder mehrerer Abschnitte der Nachricht benötigt wird. Ein <ds:KeyInfo>-Element für die digitale Signatur beschreibt ein öffentliches Zertifikat und ein <ds:KeyInfo>-Element für die Verschlüsselung beschreibt einen privaten Schlüssel.
- Referenz des Sicherheitstokens
- Schlüssel-ID
- Name und Seriennummer des X509-Zertifikatausstellers
- Integriertes Token
- Fingerabdruck (nur JAX-WS)
- Schlüsselname (nur JAX-RPC)
Der Standardwert für die einer digitalen Signatur zugeordneten Schlüsseldaten ist Referenz des Sicherheitstokens. Der Standardwert für die der Verschlüsselung zugeordneten Schlüsseldaten ist Schlüssel-ID.
Referenz des Sicherheitstokens und Integriertes Token sind die einzigen Optionen, mit denen ein X.509-Zertifikat direkt in die Nachricht eingefügt wird. Alle anderen Optionen setzen eine ID in die Nachricht, die für den Schlüssel oder für das Zertifikat, den oder das der Empfänger der Nachricht verwendet, um in seiner Umgebung einen Schlüssel oder ein Zertifikat zum Auswerten der Nachricht auszuwählen, eindeutig ist.
- Referenz des Sicherheitstokens (Security Token Reference)
- Ein Sicherheitstoken in der Nachricht wird über die URIs (Universal Resource
Identifiers) direkt referenziert. Das folgende XML-Fragment ist ein Beispiel
für ein <KeyInfo>-Element, das in einer
SOAP-Nachricht für den Schlüsseldatentyp "Referenz des Sicherheitstokens" (Security Token Reference)
für ein
X.509v3-Token generiert wird:
<wsse:BinarySecurityToken EncodingType="...#Base64Binary" ValueType="...#X509v3" wsu:Id="SomeCert"> .... </wsse:BinarySecurityToken> ... <ds:KeyInfo> <wsse:SecurityTokenReference> <wsse:Reference URI='#SomeCert' ValueType="...#X509v3" /> </wsse:SecurityTokenReference> </ds:KeyInfo>
Achtung: Wie im Entwurf Web services Interoperability Organization (WS-I) Basic Security Profile Version 1 draft festgelegt und im vorherigen Beispiel gezeigt, muss das Element wsse:Reference in einem SECURE_ENVELOPE-Element ein Attribut des Typs ValueType haben. - Schlüssel-ID (Key Identifier)
- Das Sicherheitstoken wird mit einem nicht transparenten Wert referenziert, der das
Token eindeutig identifiziert.
Der Algorithmus, der für die Generierung des Werts von <KeyIdentifier> verwendet wird, richtet sich nach dem
Tokentyp.
Sie können die Kennung beispielsweise für öffentliche Schlüssel verwenden, die in Internet Engineering Task Force (IETF) Request for Comment
(RFC) 3280 definiert sind.
Das folgende Element <KeyInfo> wird in der SOAP-Nachricht für diesen Schlüsseldatentyp generiert:
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <wsse:SecurityTokenReference> <wsse:KeyIdentifier ValueType="http://docs.oasis-open.org/wss/2004/01 /oasis-200401-wss-x509-token-profile-1.0#X509v3SubjectKeyIdentifier"> /62wXO... </wsse:KeyIdentifier> </wsse:SecurityTokenReference> </ds:KeyInfo>
- Name und Seriennummer des X509-Zertifikatausstellers (X509 Issuer Name and Issuer Serial)
- Das Sicherheitstoken wird durch den Namen und die Seriennummer eines X.509-Zertifikats referenziert. Das folgende Element <KeyInfo> wird in der SOAP-Nachricht für diesen Schlüsseldatentyp generiert:
<ds:KeyInfo> <wsse:SecurityTokenReference> <ds:X509Data> <ds:X509IssuerSerial> <ds:X509IssuerName>CN=Jones, O=IBM, C=US</ds:X509IssuerName> <ds:X509SerialNumber>1040152879</ds:X509SerialNumber> </ds:X509IssuerSerial> </ds:X509Data> </wsse:SecurityTokenReference> </ds:KeyInfo>
- Integriertes Token (Embedded Token)
- Das Sicherheitstoken wird direkt in das Element <SecurityTokenReference>
eingebettet. Das folgende Element <KeyInfo> wird in der SOAP-Nachricht für diesen Schlüsseldatentyp generiert:
<ds:KeyInfo> <wsse:SecurityTokenReference> <wsse:Embedded wsu:Id=”tok1” /> … </wsse:Embedded> </wsse:SecurityTokenReference> </ds:KeyInfo>
- Fingerabdruck (Thumbprint)
- Bei Auswahl von "Fingerabdruck" (Thumbprint) wird ein
KeyIdentifier-Element mit dem Werttyp (ValueType)
#ThumbPrintSHA1 verwendet. Dieser Schlüsseldatentyp ist für die Verwendung mit
X.509-Token vorgesehen. X.509-Schlüssel oder -Zertifikat werden vom
Base64-codierten Fingerabdruck des Zertifikats referenziert.
Das folgende XML-Fragment ist ein Beispiel für ein <KeyInfo>-Element, das in der SOAP-Nachricht für diesen Schlüsseldatentyp generiert wird:
<ds:KeyInfo> <wsse:SecurityTokenReference> <wsse:KeyIdentifier EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/oasis-wss480soap-message-security-1.1#ThumbPrintSHA1" >B5o2elsan6IhbxxYgZ62pPFnUIc=</wsse:KeyIdentifier> </wsse:SecurityTokenReference> </ds:KeyInfo>
- Schlüsselname (Key Name)
- Das Sicherheitstoken wird mit einem Namen referenziert, der mit einer Identitätszusicherung (IDAssertion) im Token übereinstimmt.
Verwenden Sie diesen Schlüsseltyp nicht, da
mehrere Sicherheitstoken mit dem angegebenen Namen übereinstimmen könnten.
Das folgende Element <KeyInfo> wird in der SOAP-Nachricht für diesen Schlüsseldatentyp generiert:
<ds:KeyInfo> <ds:KeyName>CN=Group1</ds:KeyName> </ds:KeyInfo>
Wenn Sie einen HMAC-Algorithums für digitale Signatur (Key-Hashing Message Authentication Code) wie Schema for XML Signatures verwenden, sollten Sie im Allgemeinen einen Schlüsselnamen verwenden.
Alle Schlüsseldatentypen sind im Web Services Security: SOAP Message Security 1.0 (WS-Security 2004) OASIS standard im Abschnitt "Web Services Security" beschrieben.