Java Web服务: WS-Security的细粒度使用 - 编程入门网
literal"/>
</wsdl:input>
<wsdl:output name="getBooksByTypeResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="addBook">
<wsdlsoap:operation soapAction="urn:addBook"/>
<wsdl:input name="addBookRequest">
<wsp:PolicyReference
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
URI="#SignOnly"/>
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="addBookResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="library-granular">
...
</wsdl:service>
</wsdl:definitions>
清单 1 中的策略和 WSDL 均来自早期文章,不过没有按照本文的方式事先合并。但是,您会发现策略中有一处显著的不同:早期的版本都包括了 Rampart 配置信息,这些信息特定于客户机或服务器。现在策略被嵌入到 WSDL 中,因此不适合直接包含 Rampart 配置。(您需要编辑 WSDL 以包含客户机 Rampart 配置信息,并在每次发生更改时重新生成代码,而在服务器端,Rampart 配置将被公开给访问 WSDL 的任何人)。因此示例代码将单独设置配置信息。为此,对包含的 Rampart 配置使用了之前用于策略的相同技巧的不同变体。 Java Web服务: WS-Security的细粒度使用(2)时间:2011-02-03 IBM Dennis Sosnoski客户端使用 不管是否包含 WS-Policy,从用户的角度来看,从 WSDL 中生成代码的效果是相同的。如果查看由包含 WS-Policy 的 WSDL 生成的客户机存根的内部,将发现策略在构建时被直接连接到服务描述的组件中,但是这被隐藏在实现的内部,不会影响到客户机代码使用的接口方法。 要在客户机中利用 WS-SecurityPolicy 配置,您一定 需要在客户机代码中采取一些操作。您至少需要在与您的存根实例相关联的 org.apache.axis2.client.ServiceClient 上使用 Rampart 模块。这一步是必须的,即使您在 WSDL 中包含了 Rampart 配置信息。不幸的是,在当前的代码中,似乎没有任何方法可以在操作或消息级别使用 Rampart,因此目前与 Axis2 客户机结合使用时,细粒度 WS-Security 的一部分好处就丢失了。 如果将 Rampart 配置与 WSDL 分离,正如建议的那样,您也需要对服务描述应用这些配置。清单 2 展示了用于本样例应用程序的客户机代码。它调用 applyPolicy() 方法来将包含 Rampart 配置的策略添加到服务器定义。 清单 2. 配置客户端操作 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |