加密的 SOAP 头

加密的头元素提供了加密 SOAP 头的标准方法。作为 OASIS SOAP 消息安全性规范的扩展之一,加密的头元素指示响应者已处理请求。加密 SOAP 头和部件有助于提供更安全的消息级安全性。

EncryptedHeader 或 <wsse11:EncryptedHeader> 元素是已更新的 Web Service 安全性 V1.1 标准中的一部分,和其他支持 V1.1 标准的供应商(例如 Microsoft .NET 和 DataPower®)之间存在互操作性。

将 EncryptedHeader 元素用于加密 SOAP 头块。EncryptedHeader 元素允许 Web Service 安全性符合 SOAP mustUnderstand 处理准则以及防止泄露有关 SOAP 头块的属性中包含的信息。

<wsse11:EncryptedHeader> 元素必须包含一个 <xenc:EncryptedData> 元素。每个加密的头元素中只允许存在一个 <xenc:EncryptedData> 元素。

加密的数据元素

正常情况下,编程模型(如 JAX-WS)串行 SOAP 消息到 Java™ 绑定对象,然后分派调用到应用程序代码。然而,如果已对 SOAP 消息进行加密,那么反序列化就会失败,原因是在加密之前,会用 XML 加密标准中的 EncryptedData XML 元素替换原始内容。

某些情况下,它适合于为接收方加密的 <wsse:Security> 头中包含的令牌。

使用 EncryptedData 元素时请遵循以下准则:
  • EncryptedHeader 元素必须包含一个 EncryptedData 元素。
  • 可以使用 <xenc:EncryptedData> 元素来包含安全性令牌,并将其包含在 <wsse:Security> 头中。
  • <xenc:EncryptedData> 一定不能包含引用包含的安全性令牌的 XML 标识。
  • 所有的 <xenc:EncryptedData> 令牌必须具有嵌入的加密密钥,还必须被独立的加密密钥引用。
  • 如果需要兼容 Basic Security Profile 1.1,那么 <xenc:EncryptedData> 元素必须包含标识属性。

加密的部件的策略声明

EncryptedParts 策略声明指定要对安全策略中的进行加密的头。下表描述了可用于 EncryptedParts 的元素和属性。

表 1. EncryptedParts 元素的属性和元素. 使用加密部件来提供更安全的消息级安全性。
元素或属性 描述
/sp:EncryptedParts/sp:Header 可选。此可选元素指示必须保护特定 SOAP 头(或者一组 SOAP 头)。单个 EncryptedParts 元素中可包含多个 sp:Header 元素。

必须加密每个头(或一组头),并且此加密将通过使用 Web Service 安全性 V1.1 加密的头来加密元素。因此,如果服务不支持 WS-Secuirty 1.1 加密的头,那么不能通过使用消息级安全性来加密头。

如果要对局部名相同但名称空间名称不同的多个 SOAP 头进行加密,那么需要多个 sp:Header 元素,它们作为单个 sp:EncryptedParts 声明的一部分或作为独立 sp:EncryptedParts 声明的一部分。

/sp:EncryptedParts/sp:Header/@Name 可选。此属性指示要受机密性保护的 SOAP 头的局部名。如果未指定此属性,那么将保护名称空间与 Namespace 属性相匹配的所有 SOAP 头。
/sp:EncryptedParts/sp:Header/@Namespace 必需。此属性指示要受机密性保护的 SOAP 头的名称空间。

以下消息示例显示已对策略指定加密头的 EncryptedParts 策略声明的情况下,消息上的 EncryptedHeader 元素看上去的样子:

<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>

要加密 Web Service 安全性 V1.0 规范格式的头,请指定绑定中 <encryptionInfo> 上的 com.ibm.wsspi.wssecurity.encryptedHeader.generate.WSS1.0 属性值为 True。指定了此属性时,加密的目标头被 <EncryptedData> 元素替换,取而代之的是 <EncryptedHeader> 元素(包含 <EncryptedData> 元素)。

对与 WebSphere® Application Server V7.0 之前版本等价的 Web Service 安全性 V1.1 行为,在绑定中的 <encryptionInfo> 元素上指定 com.ibm.wsspi.wssecurity.encryptedHeader.generate.WSS1.1.pre.V7 属性值为 True。如果指定此属性,那么 <EncryptedHeader> 元素会包括 wsu:Id 参数,而 <EncryptedData> 元素会省略该 Id 参数。只有在不需要符合 Basic Security Profile 1.1 时,才应该使用此属性。

有关 EncryptedHeader 元素和 EncryptedData 元素的完整信息,请参阅 Web Service 安全性 V1.1 规范。


指示主题类型的图标 概念主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwbs_wssencryptedheader
文件名:cwbs_wssencryptedheader.html