快速业务通道

Java Web服务: Metro服务下的WS-Security - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
     </wsp:Policy>      </sp:SupportingTokens>     </wsp:All>    </wsp:ExactlyOne>   </wsp:Policy> </wsdl:definitions>

清单 1 WSDL 告诉我们,要访问服务需要进行哪些安全处理。您需要同时在服务器端和客户端向策略 信息中添加 WSDL 自定义扩展,通过用户配置细节表明如何实现安全处理。这些自定义扩展被加入到了 WSDL 中的 <wsp:Policy> 组件。下一步,我将向您展示每一端的扩展示例。

Java Web服务: Metro服务下的WS-Security(3)

时间:2011-07-25 IBM Dennis Sosnoski

客户端应用

在客户端,使用一个名为 wsit-client.xml (这个文件名是固定的)的文件来进行 WSIT 配置。这个 文件必须位于根目录的路径下(不在任何包中),或者在类路径的一个目录的 META-INF 子目录中。而 wsit-client.xml 必须是能直接提供全部 WSDL 服务或通过 <wsdl:import> 引用某个独立的 WSDL 服务定义的 WSDL 文档。无论哪一种方式,WSDL 都必须包含 WS-Policy/WS-SecurityPolicy 的全部要求 和 WSIT 配置扩展。

清单 2 展示了 清单 1 WSDL 中的策略部分,通过添加一个 WSIT 自定义扩展来配置客户端 UsernameToken 支持。在这里,那个自定义扩展是 <wssc:CallbackHandlerConfiguration> 元素 及其子元素,以粗体显示。两个 <wssc:CallbackHandler> 子元素定义回调类,第一个定义用户名 (name="usernameHandler"),第二个定义密码(name="passwordHandler")。指定的类必须实现 javax.security.auth.callback.CallbackHandler 接口。

清单 2. 带有 WSIT 客户端扩展的 UsernameToken 策略

<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"  xmlns:wsu=    "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"    wsu:Id="UsernameToken">   <wsp:ExactlyOne>    <wsp:All>     <sp:SupportingTokens       xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">      <wsp:Policy>       <sp:UsernameToken sp:IncludeToken=".../IncludeToken/AlwaysToRecipient"/>      </wsp:Policy>     </sp:SupportingTokens>     <wssc:CallbackHandlerConfiguration wspp:visibility="private"       xmlns:wssc="http://schemas.sun.com/2006/03/wss/client"       xmlns:wspp="http://java.sun.com/xml/ns/wsit/policy">      <wssc:CallbackHandler name="usernameHandler"        classname="com.sosnoski.ws.library.metro.UserPassCallbackHandler"/>      <wssc:CallbackHandler name="passwordHandler"        classname="com.sosnoski.ws.library.metro.UserPassCallbackHandler"/>     </wssc:CallbackHandlerConfiguration>    </wsp:All>   </wsp:ExactlyOne> </wsp:Policy>

在 清单 2 中,所有的回调必须使用相同的类。清单 3 是回调类的代码,作用是检查每个回调请求的 类型并恰当地为其赋值:

清单3. 客户端回调代码

public class UserPassCallbackHandler implements CallbackHandler {    public void handle(Callback[] callbacks) throws UnsupportedCallbackException  {      for (int i = 0; i &

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号