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 节 “指定到加密和签名的消息部分”)。