Java Web Services:不使用客户端证书的WS-Security
2010-10-26 12:59:21 来源:Web开发网不使用客户端证书的 WS-SecureConversation
在使用 WS-SecureConversation 时,您可以使用相同的技术在没有客户端证书的情况下处理客户端和 Security Token Service (STS) 之间的消息交换。(阅读 “WS-Trust 和 WS-SecureConversation” 和 “WS-SecureConversation 性能” 了解 WS-SecureConversation 的细节。)要使用这种方法,您基本上需要将 清单 1 的策略替换为 <sp:BootstrapPolicy>,以实现安全会话。清单 2 显示了这是如何工作的,它用粗体显示的 <sp:SymmetricBinding> 替换 “WS-SecureConversation 性能” 中使用的 <sp:AsymmetricBinding>:
清单 2. WS-SecureConversation 中不使用客户端证书的 WS-Policy
<wsp:Policy wsu:Id="SecureConv"
xmlns:wsu=".../oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
<wsp:ExactlyOne>
<wsp:All>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:SecureConversationToken
sp:IncludeToken=".../IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:BootstrapPolicy>
<wsp:Policy>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:X509Token sp:IncludeToken=".../IncludeToken/Never">
<wsp:Policy>
<sp:RequireDerivedKeys/>
<sp:RequireThumbprintReference/>
<sp:WssX509V3Token10/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic128Rsa15/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict/>
</wsp:Policy>
</sp:Layout>
</wsp:Policy>
</sp:SymmetricBinding>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefThumbprint/>
<sp:MustSupportRefEncryptedKey/>
</wsp:Policy>
</sp:Wss11>
<sp:EncryptedParts>
<sp:Body/>
</sp:EncryptedParts>
</wsp:Policy>
</sp:BootstrapPolicy>
</wsp:Policy>
</sp:SecureConversationToken>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic128Rsa15/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict/>
</wsp:Policy>
</sp:Layout>
</wsp:Policy>
</sp:SymmetricBinding>
<sp:EncryptedParts>
<sp:Body/>
</sp:EncryptedParts>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
除了使用客户端生成的使用 STS 进行消息交换的密钥,通过去除 <wsap:UsingAddressing> 断言, 清单 2 中的策略也与 “WS-SecureConversation 性能” 中所使用的不同。
理论上,这个策略可以处理任何的 WS-Security 和 WS-SecureConversation 实现。实践中,当我在三个主流开源 Java Web Service 工具尝试这个配置时遇到了一些问题。CXF 是唯一能够正常运行所编写的策略的工具。Axis2 完全不能运行,它在处理 STS 响应消息时会出现客户端异常错误。当我将辅助程序策略修改回不对称加密方式时,Axis2 能够运行,但是它在所有消息上使用 WS-Addressing。Metro 也会出错;在我重新添加 <wsap:UsingAddressing> 时,它能够处理客户端为 STS 消息传递的对称加密所生成的密钥。
更多精彩
赞助商链接