6.2.5. 指定到加密和签名的消息部分

概述

加密和签名提供了两种类型的保护:机密性和完整性。WS-SecurityPolicy 保护断言被用来指定消息的哪些部分受到保护。有关保护机制的详情,其他机制的详情会在相关的绑定策略中单独指定(请参阅 x第 6.2.3 节 “指定 AsymmetricBinding 策略”第 6.2.4 节 “指定 SymmetricBinding 策略”第 6.1 节 “传输层安全性”

此处描述的保护断言要与 SOAP 安全性结合使用,因为它们适用于 SOAP 消息的功能。然而,这些策略也可受到传输绑定(如 HTTPS)的要求,对整个 消息应用保护,而不是对特定部分提供支持。

策略主题

必须将一个保护断言应用到 消息策略主题 (请参阅 “消息策略主题”一节)。换句话说,它必须放在 wsdl:input 中、wsdl:outputwsdl:fault 元素 in an WSDL 绑定中。例如,如果带有 ID 的保护策略, MutualCertificate10SignEncrypt_IPingService_header_Input_policy,您可以将策略应用到 wsdl:input 消息部分,如下所示:

<wsdl:operation name="header">
  <soap:operation soapAction="http://InteropBaseAddress/interop/header" style="document"/>
  <wsdl:input name="headerRequest">
    <wsp:PolicyReference
        URI="#MutualCertificate10SignEncrypt_IPingService_header_Input_policy"/>
      <soap:header message="i0:headerRequest_Headers" part="CustomHeader" use="literal"/>
      <soap:body use="literal"/>
    </wsdl:input>
    ...
</wsdl:operation>

保护断言

Apache CXF 支持以下 WS-SecurityPolicy 保护断言:

  • SignedParts
  • EncryptedParts
  • SignedElements
  • EncryptedElements
  • ContentEncryptedElements
  • RequiredElements
  • RequiredParts

语法

SignedParts 元素使用以下语法:

<sp:SignedParts xmlns:sp="..." ... >
  <sp:Body />?
  <sp:Header Name="xs:NCName"? Namespace="xs:anyURI" ... />*
  <sp:Attachments />?
  ...
</sp:SignedParts>

EncryptedParts 元素使用以下语法:

<sp:EncryptedParts xmlns:sp="..." ... >
  <sp:Body/>?
  <sp:Header Name="xs:NCName"? Namespace="xs:anyURI" ... />*
  <sp:Attachments />?
  ...
</sp:EncryptedParts>

策略示例

例 6.6 “完整性和加密策略断言” 显示合并两个保护断言的策略:签名部分断言和加密部分断言。当此策略应用到消息部分时,受影响的消息正文会被签名并加密。另外,名为 CustomHeader 的消息标头被签名。

例 6.6. 完整性和加密策略断言

<wsp:Policy wsu:Id="MutualCertificate10SignEncrypt_IPingService_header_Input_policy">
    <wsp:ExactlyOne>
        <wsp:All>
            <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <sp:Body/>
                <sp:Header Name="CustomHeader" Namespace="http://InteropBaseAddress/interop"/>
            </sp:SignedParts>
            <sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <sp:Body/>
            </sp:EncryptedParts>
        </wsp:All>
    </wsp:ExactlyOne>
</wsp:Policy>

sp:Body

此元素指定保护(静态或签名)应用于消息的正文。保护应用于 整个 消息正文:即 soap:Body 元素、其属性及其内容。

sp:Header

此元素指定,使用 Namespace 属性和命名空间将保护应用到标题的本地名称指定的 SOAP 标头。保护应用于 整个 邮件标头,包括其属性及其内容。

sp:Attachments

此元素指定 所有带有 Attachments(SwA)附加的 SOAP 都受到保护。