6.2.5. 指定到加密和签名的消息部分
概述
加密和签名提供了两种类型的保护:机密性和完整性。WS-SecurityPolicy 保护断言被用来指定消息的哪些部分受到保护。有关保护机制的详情,其他机制的详情会在相关的绑定策略中单独指定(请参阅 x第 6.2.3 节 “指定 AsymmetricBinding 策略”、第 6.2.4 节 “指定 SymmetricBinding 策略” 和 第 6.1 节 “传输层安全性”。
此处描述的保护断言要与 SOAP 安全性结合使用,因为它们适用于 SOAP 消息的功能。然而,这些策略也可受到传输绑定(如 HTTPS)的要求,对整个 消息应用保护,而不是对特定部分提供支持。
策略主题
必须将一个保护断言应用到 消息策略主题 (请参阅 “消息策略主题”一节)。换句话说,它必须放在 wsdl:input
中、wsdl:output
或 wsdl: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 都受到保护。