Java Web 服务: Metro 服务下的 WS-Security
2010-02-02 00:00:00 来源:WEB开发网清单 6 WSDL 与先前的 Axis2/Rampart 示例中使用过的 WSDL 的唯一重要区别是:当 X509 证书没有被包含到一条信息中时,需要向 <sp:InitiatorToken> 组件添加一个要求使用拇指指纹引用的策略,其原因是 Metro 和 Axis2 中引用的默认处理方式不同。
当客户端(在 WS-SecurityPolicy 术语中称为发起者)发送一条信息时,客户端的 X.509 证书也作为信息的一部分发送(因为<sp:InitiatorToken/wsp:Policy/sp:X509Token> 元素上的 sp:IncludeToken=".../IncludeToken/AlwaysToRecipient" 属性),然后服务器使用该证书进行签名验证。当服务器对客户端进行应答时,进行加密处理时需要引用那个证书。如果没有指定其他方法,Axis2/Rampart 默认使用一个拇指指纹引用进行证书识别。Metro/WSIT 默认使用另一种方法,称为主体密匙标识符(subject key identifier,SKI)。Axis2/Rampart 示例中使用的证书的形式并不支持 SKI,所以它们默认不能用于 Metro/WSIT。向策略中添加 <sp:RequireThumbprintReference/> 元素告知 Metro/WSIT 使用拇指指纹引用来代替证书。
这种策略改变使先前的 Axis2/Rampart 示例使用的证书和密匙存储可以在现在的示例中使用。这还使 Axis2/Rampart 客户端示例可以与 Metro/WSIT 服务器一起使用,反之也然,从而作为一种检查互操作性的便捷方式。如果您进行这种尝试(方法是修改每次传送到测试客户端的目标路径),就会发现大部分消息可以毫不费力地交换 — 但是在实际操作中有一个问题,这将在下面的 互操作性问题 小节进行讨论。
与 UsernameToken 示例一样,WSIT 需要客户端与服务器上存在针对策略信息的自定义扩展,以便提供详细的附加配置信息。
更多精彩
赞助商链接