快速业务通道

Java Web服务: WS-Security的细粒度使用 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
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. 配置客户端操作// create the client stub String target = args[0] + "://" + args[1] + ":" + args[2] + args[3]; System.out.println("Connecting to " + target); LibraryGranularStub stub = new LibraryGranularStub(target); // configure and engage rampart module ServiceClient client = stub._getServiceClient(); client.getAxisService().applyPolicy(loadPolicy("rampart-client-policy.xml")); client.engageModule("rampart"); // set the username and password for requests which use them Options options = client.getOptions(); optio

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号