6.2.4. 指定 SymmetricBinding 策略

概述

对称绑定策略使用对称密钥算法(共享 secret 密钥)实现 SOAP 消息保护,并在 SOAP 层这样做。对称绑定的示例是 Kerberos 协议和 WS-SecureConversation 协议。

注意

目前,Apache CXF 只支持 对称绑定中的 WS-SecureConversation 令牌。

策略主题

对称绑定策略必须应用到端点策略主题(请参阅 “端点策略主题”一节)。例如,如果带有 ID 的对称绑定策略, SecureConversation_MutualCertificate10SignEncrypt_IPingService_policy,您可以将策略应用到端点绑定中,如下所示:

<wsdl:binding name="SecureConversation_MutualCertificate10SignEncrypt_IPingService" type="i0:IPingService">
  <wsp:PolicyReference URI="#SecureConversation_MutualCertificate10SignEncrypt_IPingService_policy"/>
  ...
</wsdl:binding>

语法

SymmetricBinding 元素具有以下语法:

<sp:SymmetricBinding xmlns:sp="..." ... >
  <wsp:Policy xmlns:wsp="...">
  (
   <sp:EncryptionToken ... >
     <wsp:Policy> ... </wsp:Policy>
   </sp:EncryptionToken>
   <sp:SignatureToken ... >
     <wsp:Policy> ... </wsp:Policy>
   </sp:SignatureToken>
  ) | (
   <sp:ProtectionToken ... >
     <wsp:Policy> ... </wsp:Policy>
   </sp:ProtectionToken>
  )
   <sp:AlgorithmSuite ... > ... </sp:AlgorithmSuite>
   <sp:Layout ... > ... </sp:Layout> ?
   <sp:IncludeTimestamp ... /> ?
   <sp:EncryptBeforeSigning ... /> ?
   <sp:EncryptSignature ... /> ?
   <sp:ProtectTokens ... /> ?
   <sp:OnlySignEntireHeadersAndBody ... /> ?
   ...
  </wsp:Policy>
  ...
</sp:SymmetricBinding>

策略示例

例 6.5 “Symmetric Binding 示例” 演示了对称绑定的示例,它支持使用签名和加密的消息保护,其中签名和加密是使用单个对称密钥(即使用对称加密)进行的。此示例不指定消息的哪些部分应该被签名并加密。有关如何进行此操作的详情,请参考 第 6.2.5 节 “指定到加密和签名的消息部分”

例 6.5. Symmetric Binding 示例

<wsp:Policy wsu:Id="SecureConversation_MutualCertificate10SignEncrypt_IPingService_policy">
  <wsp:ExactlyOne>
    <wsp:All>
      <sp:SymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
        <wsp:Policy>
          <sp:ProtectionToken>
            <wsp:Policy>
              <sp:SecureConversationToken>
                ...
              </sp:SecureConversationToken>
            </wsp:Policy>
          </sp:ProtectionToken>
          <sp:AlgorithmSuite>
            <wsp:Policy>
              <sp:Basic256/>
            </wsp:Policy>
          </sp:AlgorithmSuite>
          <sp:Layout>
            <wsp:Policy>
              <sp:Lax/>
            </wsp:Policy>
          </sp:Layout>
          <sp:IncludeTimestamp/>
          <sp:EncryptSignature/>
          <sp:OnlySignEntireHeadersAndBody/>
        </wsp:Policy>
      </sp:SymmetricBinding>
      <sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
        <wsp:Policy>
          <sp:MustSupportRefKeyIdentifier/>
          <sp:MustSupportRefIssuerSerial/>
        </wsp:Policy>
      </sp:Wss10>
      ...
    </wsp:All>
  </wsp:ExactlyOne>
</wsp:Policy>

sp:ProtectionToken

此元素指定一个对称令牌,用于签名和加密消息。例如,您可以在此处指定 WS-SecureConversation 令牌。

如果要使用不同令牌来签名和加密操作,请使用 sp:SignatureToken 元素和 sp:EncryptionToken 元素代替这个元素。

sp:SignatureToken

此元素指定一个对称令牌,用于签名消息。它应该与 sp:EncryptionToken 元素结合使用。

sp:EncryptionToken

此元素指定一个对称令牌来加密消息。它应该与 sp:SignatureToken 元素结合使用。

sp:AlgorithmSuite

这个元素指定了用于签名和加密的加密算法套件。有关可用算法套件的详情,请参考 第 6.2.7 节 “指定 Algorithm Suite”

SP:布局

此元素指定是否在 SOAP 消息中添加安全性标头的顺序实施任何条件。sp:Lax 元素指定没有对安全标头顺序实施的条件。sp:Lax 的替代方案是 sp:Strict,sp:LaxTimestampFirst, 或 sp:LaxTimestampLast

sp:IncludeTimestamp

如果策略中包含此元素,则运行时会将 wsu:Timestamp 元素添加到 wsse:Security 标头。默认情况下 不包含 时间戳。

sp:EncryptBeforeSigning

当消息部分同时受到加密和签名条件时,需要指定执行这些操作的顺序。默认顺序是在加密前签名。但是,如果您将这个元素包含在对称策略中,则这个顺序被修改为在签名前加密。

注意

隐式,此元素也会影响解密和签名验证操作的顺序。例如,如果在加密前发送消息符号的发件人,则消息的接收器必须在验证签名前进行解密。

sp:EncryptSignature

此元素指定邮件签名必须经过加密。默认为 false。

sp:ProtectTokens

此元素指定签名必须包含用于生成该签名的令牌。默认为 false。

sp:OnlySignEntireHeadersAndBody

此元素指定签名 只应用于 整个正文或整个标头,不适用于标题的正文或子元素的子元素。启用这个选项时,您可以有效地防止使用 sp:SignedElements 断言(请参阅 第 6.2.5 节 “指定到加密和签名的消息部分”)。