Verschlüsselte SOAP-Header
Das Element für verschlüsselte Header ist eine Standardmethode für die Verschlüsselung von SOAP-Headern. Als eine der Erweiterungen der OASIS-Spezifikation für die SOAP-Nachrichtensicherheit gibt das Element für verschlüsselte Header an, dass der Responder die Anforderung verarbeitet hat. Durch das Verschlüsseln von SOAP-Headern und -Abschnitten kann eine höhere Sicherheit auf Nachrichtenebene erreicht werden.
Das Element EncryptedHeader bzw. <wsse11:EncryptedHeader> ist Teil des aktualisierten Standards Web Services Security Version 1.1 und unterstützt die Interoperabilität mit anderen Anbietern, die die Standards der Version 1.1 unterstützen, wie z. B. Microsoft .NET und DataPower.
Verwenden Sie das Element EncryptedHeader für die Verschlüsselung von SOAP-Headerblöcken. Das Element EncryptedHeader ermöglicht Web Services Security, mit den SOAP-Verarbeitungsrichtlinien "mustUnderstand" konform zu sein und die Offenlegung von Informationen zu verhindern, die in Attributen eines SOAP-Headerblocks enthalten sind.
Das Element <wsse11:EncryptedHeader> muss ein Element <xenc:EncryptedData> enthalten. Es ist nur ein einziges Element <xenc:EncryptedData> pro Element für verschlüsselte Header zulässig.
Element für verschlüsselte Daten
Normalerweise entserialisiert das Programmiermodell, wie z. B. JAX-WS, die SOAP-Nachricht in ein Java™-Bindungsobjekt, bevor es dem Anwendungscode den Aufruf zuteilt. Wenn die SOAP-Nachricht jedoch verschlüsselt ist, schlägt die Entserialisierung fehl, weil der ursprüngliche Inhalt vor der Verschlüsselung durch das XML-Element EncryptedData aus dem Standard XML Encryption ersetzt wird.
in bestimmten Fällen kann es empfehlenswert sein, dass das im Header <wsse:Security> enthaltene Element für die Empfängerverarbeitungsrolle verschlüsselt wird.
- Das Element EncryptedHeader muss ein Element EncryptedData enthalten.
- Das Element <xenc:EncryptedData> kann verwendet werden, um ein Sicherheitstoken zu enthalten und dieses in den Header <wsse:Security> einzufügen.
- Das Element <xenc:EncryptedData> darf keine XML-ID für die Referenzierung des enthaltenen Sicherheitstokens enthalten.
- Alle Token des Typs <xenc:EncryptedData> müssen einen eingebetteten Chiffrierschlüssel haben oder von einem separaten Chiffrierschlüssel referenziert werden.
- Wenn eine Kompatibilität mit Basic Security Profile 1.1 gewünscht wird, muss das Element <xenc:EncryptedData> ein "Id"-Attribut enthalten.
Richtlinienzusicherung für verschlüsselte Abschnitte
Die Richtlinienzusicherung EncryptedParts gibt in der Sicherheitsrichtlinie an, welcher Header verschlüsselt werden soll. In der folgenden Tabelle werden die Elemente und Attribute beschrieben, die für EncryptedParts verwendet werden können.
Element oder Attribut | Beschreibung |
---|---|
/sp:EncryptedParts/sp:Header | Optional. Das Vorhandensein dieses optionalen Elements gibt an, dass ein bestimmter
SOAP-Header (oder eine Gruppe solcher Header) geschützt werden muss.
Es können mehrere Element vom Typ "sp:Header" in einem einzigen Element "EncryptedParts" enthalten sein.
Jeder Header (oder Gruppe von Headern) muss verschlüsselt werden, und bei dieser Verschlüsselung werden die Elemente mithilfe von verschlüsselten Headern der Web Services Security Version 1.1 verschlüsselt. Wenn verschlüsselte Header der WS-Security Version 1.1 von einem Service nicht unterstützt werden, können die Header nicht über die Sicherheit auf Nachrichtenebene verschlüsselt werden. Wenn mehrere SOAP-Header mit demselben lokalen Namen, aber unterschiedlichen Namespacenamen verschlüsselt werden sollen, sind mehrere Elemente vom Typ "sp:Header" erforderlich: entweder im Rahmen einer einzigen Zusicherung vom Typ "sp:EncryptedParts" oder im Rahmen gesonderter Zusicherungen des Typs "sp:EncryptedParts". |
/sp:EncryptedParts/sp:Header/@Name | Optional. Dieses Attribut gibt den lokalen Namen des SOAP-Headers an, dessen Vertraulichkeit geschützt werden soll. Wenn dieses Attribut nicht angegeben wird, müssen alle SOAP-Header geschützt werden, deren Namespaces mit dem Attribut "Namespace" übereinstimmen. |
/sp:EncryptedParts/sp:Header/@Namespace | Erforderlich. Dieses Attribut gibt den Namespace der SOAP-Header an, deren Vertraulichkeit geschützt werden soll. |
Das folgende Nachrichtenbeispiel veranschaulicht, wie das Element "EncryptedHeader" in einer Nachricht aussieht, wenn die Richtlinienzusicherung "EncryptedParts" für den verschlüsselten Header in der Richtlinie angegeben wurde:
<S:Envelope xmlns:S="…" xmlns:wsse="…" xmlns:wsse11="…" xmlns:wsu="…"
xmlns:xenc="…" xmlns:ds="…">
<S:Header>
<wsse:Security>
<!-- Tokens etc. -->
<xenc:EncryptedKey>
<xenc:EncryptionMethod Algorithm="…"/>
<ds:KeyInfo>
… …
</ds:KeyInfo>
<xenc:CipherData>
<xenc:CipherValue>…</xenc:CipherValue>
</xenc:CipherData>
<xenc:ReferenceList>
<xenc:DataReference URI="#hdrID"/>
</xenc:ReferenceList>
</xenc:EncryptedKey>
</wsse:Security>
<wsse11:EncryptedHeader wsu:Id="hdrID">
<xenc:EncryptedData Id="encDataID">
<xenc:CipherData>
<xenc:CipherValue>…</xenc:CipherValue>
</xenc:CipherData>
…
</xenc:EncryptedData>
</wsse11:EncryptedHeader>
</S:Header>
<S:Body>
…
</S:Body>
</S:Envelope>
Wenn Sie Header im Format der Spezifikation Web Services Security Version 1.0 verschlüsseln möchten, geben Sie die Eigenschaft "com.ibm.wsspi.wssecurity.encryptedHeader.generate.WSS1.0" mit dem Wert true im Element <encryptionInfo> der Bindung an. Wenn diese Eigenschaft angegeben ist, wird der Zielheader für die Verschlüsselung durch ein Element <EncryptedData> anstelle eines Elements <EncryptedHeader> ersetzt, das ein Element <EncryptedData> enthält.
Damit das Verhalten für Web Services Security Version 1.1 dem der WebSphere Application Server Versionen vor Version 7.0 entspricht, geben Sie für die Eigenschaft "com.ibm.wsspi.wssecurity.encryptedHeader.generate.WSS1.1.pre.V7" den Wert true im Element <encryptionInfo> in der Bindung an. Wenn diese Eigenschaft angegeben wird, enthält das Element <EncryptedHeader> einen Parameter des Typs "wsu:Id", während der "Id"-Parameter im Element <EncryptedData> nicht angegeben ist. Diese Eigenschaft sollte nur dann verwendet werden, wenn keine Konformität mit "Basic Security Profile 1.1" erforderlich ist.
Vollständige Informationen zum Element "EncryptedHeader" und zum Element "EncryptedData" finden Sie in der Spezifikation Web Services Security Version 1.1.