快速业务通道

Java Web 服务: Axis2 WS-Security基础 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14

清单 5 展示了回调类的实际实现,用于明文形式的密码。在本例中,用户名和密码都被提供给回调, 并且所有回调只需要检验用户名和密码组合。如果用户名和密码匹配预期值,那么返回即可;否则,将抛 出一个异常表示出错。

清单 5. 密码回调代码

import org.apache.ws.security.WSPasswordCallback; public class  PWCBHandler implements CallbackHandler {  public void handle(Callback[]  callbacks)   throws IOException, UnsupportedCallbackException {    for (int  i = 0; i < callbacks.length; i++) {     WSPasswordCallback pwcb =  (WSPasswordCallback)callbacks[i];      String id = pwcb.getIdentifer();        if (pwcb.getUsage() == WSPasswordCallback.USERNAME_TOKEN_UNKNOWN) {         // used when plain-text password in message         if  (!"libuser".equals(id) || !"books".equals(pwcb.getPassword())) {           throw new UnsupportedCallbackException(callbacks[i], "check failed");          }       }     }   } }

对于一个真正的应用程序,您肯定希望使用其他一些机制(比如数据库或外部安全机制)来检验用户 名和密码组合。回调技术可以让您使用任何检查技巧来扩展 Rampart 安全处理。

客户端配置

要对客户机代码使用 Rampart,首先需要对 Axis2 使用模块。方法就是针对客户机配置一个 Axis2 库结构,但是更简单的方法是在您的类路径中包含 rampart.mar 模块文件(以及需要使用的其他模块) 。提供的示例使用了类路径方法。

然后需要为客户机配置安全模块和其他相关参数。处理此配置的最简单方法就是直接在服务 stub 上 设置值。清单 6 展示了示例代码中的配置过程:

Java Web 服务: Axis2 WS-Security基础(6)

时间:2011-10-02 ibm Dennis Sosnoski

清单 6. 客户机配置

  /**    * Load policy file from classpath.    */   private  static Policy loadPolicy(String name) throws XMLStreamException {      ClassLoader loader = WebServiceClient.class.getClassLoader();     InputStream  resource = loader.getResourceAsStream(name);     StAXOMBuilder builder = new  StAXOMBuilder(resource);     return PolicyEngine.getPolicy (builder.getDocumentElement());   }   public static void main(String[]  args) throws IOException, XMLStreamException {     // check for required  command line parameters     if (args.length < 4) {        System.out.println("Usage:\n java " +          "com.sosnoski.ws.library.adb.WebServiceClient protocol host port path");        System.exit(1);     }     // create the client stub      String target = args[0] + "://" + args[1] + ":" + args[2] + args[3];      System.out.println("Connecting to " + target);     LibraryUsernameStub stub =  new LibraryUsernameStub(target);     // configure and engage Rampart      ServiceClient client = stub._getServiceClient();     Options options =  client.getOptions();     options.setProperty (RampartMessageData.K

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