Cabeçalhos SOAP Criptografados
O elemento de cabeçalho criptografado fornece uma maneira padrão de criptografar cabeçalhos SOAP. Como uma das extensões para a especificação de segurança de mensagem SOAP do OASIS, o elemento de cabeçalho criptografado indica que o responsável pela resposta processou o pedido. A criptografia dos cabeçalhos e das partes SOAP juda a fornecer segurança de nível de mensagem mais eficiente.
O elemento EncryptedHeader ou <wsse11:EncryptedHeader> é parte do padrão Web Services Security Versão 1.1 atualizado e permite a interoperabilidade com outros fornecedores que suportam os padrões Versão 1.1, como o Microsoft .NET e o DataPower.
Use o elemento EncryptedHeader para criptografar os blocos de cabeçalho SOAP. O elemento EncryptedHeader permite que o Web Services Security seja compatível com as diretrizes de processamento mustUnderstand de SOAP e impeça a divulgação de informações contidas em atributos em um bloco de cabeçalho SOAP.
O elemento <wsse11:EncryptedHeader> deve conter um elemento <xenc:EncryptedData>. Somente um elemento <xenc:EncryptedData> por elemento de cabeçalho criptografado é permitido.
Elemento de Dados Criptografados
Normalmente, o modelo de programação, como o JAX-WS, desserializa a mensagem SOAP para um objeto de ligação Java™ antes de despachar a chamada para o código de aplicativo. Entretanto, se a mensagem SOAP for criptografada, a desserialização falhará porque, antes da criptografia, o conteúdo original será substituído pelo elemento EncryptedData XML do padrão XML Encryption.
Em certos casos, talvez você queira que o token seja incluído no cabeçalho <wsse:Security> para que seja criptografado para a função de processamento de destinatário.
- O elemento EncryptedHeader deve conter um elemento EncryptedData.
- O elemento <xenc:EncryptedData> pode ser usado para conter um token de segurança e incluí-lo no cabeçalho <wsse:Security>.
- O <xenc:EncryptedData> não deve incluir um ID XML para fazer referência ao token de segurança contido.
- Todos os tokens <xenc:EncryptedData> devem ter uma chave de criptografia integrada ou ter referência por uma chave de criptografia separada.
- Se a conformidade com o Basic Security Profile 1.1 for desejada, o elemento <xenc:EncryptedData> deverá ter um atributo do id.
Asserção de Política para Partes Criptografadas
A asserção da política EncryptedParts especifica qual cabeçalho deve ser criptografado na política de segurança. A tabela a seguir descreve os elementos e os atributos que podem ser usados para EncryptedParts.
Elemento ou Atributo | Description |
---|---|
/sp:EncryptedParts/sp:Header | Opcional. A presença desse elemento opcional indica que um cabeçalho SOAP específico (ou conjunto de cabeçalhos) deve ser protegido. Você deve ter vários elementos
sp:Header em um único elemento EncryptedParts. Cada cabeçalho (ou conjunto de cabeçalhos) deve ser criptografado e essa criptografia criptografará elementos usando os cabeçalhos criptografados da Web Services Security Versão 1.1. Dessa maneira, se os Cabeçalhos Criptografados de WS-Secuirty 1.1 não forem suportados por um serviço, os cabeçalhos não poderão ser criptografados usando a segurança de nível de mensagem. Se vários cabeçalhos SOAP com o mesmo nome local, mas diferentes nomes de espaço de nomes tiverem que ser criptografados, serão necessários vários elementos sp:Header, ou como parte de uma única asserção sp:EncryptedParts ou como parte de asserções sp:EncryptedParts separadas. |
/sp:EncryptedParts/sp:Header/@Name | Opcional. Esse atributo indica o nome local do cabeçalho SOAP a ser protegido com confidencialidade. Se esse atributo não for especificado, todos os cabeçalhos SOAP cujo espaço de nomes corresponda ao atributo Namespace serão protegidos. |
/sp:EncryptedParts/sp:Header/@Namespace | Necessário. Esse atributo indica o espaço de nomes dos cabeçalhos SOAP a serem protegidos com confidencialidade. |
O exemplo da mensagem a seguir mostra exemplos da aparência do elemento EncryptedHeader em uma mensagem em que a asserção da política EncryptedParts para o cabeçalho criptografado foi especificada na 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 criptografar cabeçalhos no formato da especificação do Web Services Security Versão 1.0, especifique a propriedade com.ibm.wsspi.wssecurity.encryptedHeader.generate.WSS1.0 com um valor true no elemento <encryptionInfo> na ligação. Quando essa propriedade é especificada, o cabeçalho de destino para a criptografia é substituído por um elemento <EncryptedData>, e não por um elemento <EncryptedHeader> que contém um elemento <EncryptedData>.
Para o comportamento do Web Services Security Versão 1.1 que for equivalente a versões do WebSphere Application Server anteriores à versão 7.0, especifique a propriedade com.ibm.wsspi.wssecurity.encryptedHeader.generate.WSS1.1.pre.V7 com um valor de true no elemento <encryptionInfo> na ligação. Quando essa propriedade é especificada, o elemento <EncryptedHeader> inclui um parâmetro wsu:Id e o elemento <EncryptedData> omite o parâmetro Id. Essa propriedade só deverá ser utilizada se a conformidade com o Basic Security Profile 1.1 não for necessária.
Para obter informações completas sobre o elemento EncryptedHeader e o elemento EncryptedData, consulte a especificação Services Security Versão 1.1.