Cabeceras SOAP cifradas
El elemento de cabecera cifrada proporciona una forma estándar de cifrar cabeceras SOAP. Como una de las ampliaciones de la especificación de seguridad de mensajes SOAP de OASIS, el elemento de cabecera cifrada indica que el encargado de la respuesta ha procesado la solicitud. El cifrado de partes y cabeceras SOAP permite proporcionar una mayor seguridad a nivel de mensajes.
El elemento EncryptedHeader o <wsse11:EncryptedHeader> forma parte del estándar Web Services Security Versión 1.1 actualizado y permite la interoperatividad con otros proveedores que den soporte a los estándares de la Versión 1.1 como, por ejemplo, Microsoft .NET y DataPower.
Utilice el elemento EncryptedHeader para cifrar bloques de cabecera SOAP. El elemento EncryptedHeader permite que Web Services Security sea compatible con las directrices de proceso mustUnderstand de SOAP e impedir la divulgación de información contenida en los atributos de un bloque de cabecera SOAP.
El elemento <wsse11:EncryptedHeader> debe contener un elemento <xenc:EncryptedData>. Sólo se permite un elemento <xenc:EncryptedData> por elemento de cabecera cifrada.
Elemento de datos cifrados
Normalmente, un modelo de programación como JAX-WS deserializa el mensaje SOAP en un objeto de enlace Java™ antes de asignar la llamada al código de aplicación. No obstante, si el mensaje SOAP está cifrado, la deserialización falla porque, antes del cifrado, el contenido original se sustituye por el elemento XML EncryptedData del estándar de cifrado XML.
En determinados casos, es preferible que la señal que se incluye en la cabecera <wsse:Security> esté cifrada para el rol de proceso del destinatario.
- El elemento EncryptedHeader debe contener un elemento EncryptedData.
- El elemento <xenc:EncryptedData> se puede utilizar para contener una señal de seguridad e incluirla en la cabecera <wsse:Security>.
- <xenc:EncryptedData> no puede incluir un ID XML para hacer referencia a la señal de seguridad contenida.
- Todas las señales <xenc:EncryptedData> deben tener una clave de cifrado incorporada o deben estar referenciadas mediante una clave de cifrado aparte.
- Si se desea conformidad con Basic Security Profile 1.1, el elemento <xenc:EncryptedData> debe tener un atributo de Id.
Aserción de política para las partes cifradas
La aserción de política de EncryptedParts especifica qué cabecera va a estar cifrada en la política de seguridad. En la tabla siguiente se describen los elementos y los atributos que se pueden utilizar para las EncryptedParts.
Elemento o atributo | Descripción |
---|---|
/sp:EncryptedParts/sp:Header | Opcional. La presencia de este elemento opcional indica que
una cabecera SOAP específica (o un conjunto de estas cabeceras) debe protegerse. Puede tener varios elementos sp:Header en un único elemento EncryptedParts. Cada cabecera (o conjunto de cabeceras) debe estar cifrada, y este cifrado cifrará los elementos utilizando las cabeceras cifradas de Web Services Security Versión 1.1. De esta forma, si las cabeceras cifradas de WS-Security 1.1 no están soportadas por un servicio, no se podrán cifrar utilizando la seguridad a nivel de mensajes. Si se van a cifrar varias cabeceras SOAP con el mismo nombre local pero con distintos nombres de espacio de nombres, se necesitan varios elementos sp:Header, ya sea como parte de una aserción sp:EncryptedParts individual o como varias confirmaciones sp:EncryptedParts diferentes. |
/sp:EncryptedParts/sp:Header/@Name | Opcional. Este atributo indica el nombre local de la cabecera SOAP de la que se va a proteger la confidencialidad. Si no se especifica este atributo, se protegerán todas las cabeceras SOAP cuyo espacio de nombres coincida con el atributo Espacio de nombres. |
/sp:EncryptedParts/sp:Header/@Namespace | Necesario. Este atributo indica el espacio de nombres de las cabeceras SOAP de las que se va a proteger la confidencialidad. |
El siguiente mensaje de ejemplo muestra cómo es el elemento EncryptedHeader en un mensaje donde la aserción de política EncryptedParts de la cabecera cifrada se ha especificado en la política:
<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>
Para cifrar cabeceras en el formato de la especificación Web Services Security Versión 1.0, especifique la propiedad com.ibm.wsspi.wssecurity.encryptedHeader.generate.WSS1.0 con un valor true en el elemento <encryptionInfo> del enlace. Cuando se especifica esta propiedad, la cabecera de destino para el cifrado se sustituye por un elemento <EncryptedData>, en lugar de un elemento <EncryptedHeader> que contiene un elemento <EncryptedData>.
Para un comportamiento de Web Services Security Versión 1.1 equivalente a las versiones de WebSphere Application Server anteriores a la versión 7.0, especifique la propiedad com.ibm.wsspi.wssecurity.encryptedHeader.generate.WSS1.1.pre.V7 con el valor true en el elemento <encryptionInfo> del enlace. Cuando se especifica esta propiedad, el elemento <EncryptedHeader> incluye un parámetro wsu:Id y el elemento <EncryptedData> omite el parámetro Id. Esta propiedad sólo se debe utilizar si no es necesaria la conformidad con Basic Security Profile 1.1.
Para obtener información completa sobre el elemento EncryptedHeader y el elemento EncryptedData, consulte la especificación Web Services Security Versión 1.1.