快速业务通道

Java Web服务 - Axis2 WS-Security签名和加密 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
用于每个消息的时间戳(用于保护服务免受重播式攻击,在这种攻击下,消息在传输中被捕获并被重新提交,从而扰乱或中断服务)。<sp:OnlySignEntireHeadersAndBody> 元素指定签名将在消息的整个头部或消息体中完成,而不是在某些嵌套的元素(另一种安全措施,防止发生重写消息的攻击类型)中完成。<sp:SignedParts> 元素识别将要被签名的消息部分 — 在本例中为 SOAP 消息 Body。

清单 1 中的 WS-Policy 文档的最后一部分提供了特定于 Rampart 的配置信息。这是 “Axis2 WS-Security 基础” 中使用的 Rampart 配置的更加复杂的版本,这一次包括了一个 <ramp:user> 元素来识别将用于消息签名的密匙,以及一个 <ramp:signatureCrypto> 元素,用于配置包含客户机私有密匙和服务器证书的 keystore。被引用的 keystore 文件必须在运行时提供给类路径。在示例应用程序中,keystore 文件在构建期间被复制到 client/bin 目录中。

密码回调类与 “Axis2 WS-Security 基础” 中使用的类稍有不同。在那篇文章中,只需要在服务器使用密码回调,并且只需要检验(用于明文式 UsernameToken)或设置(用于散列式 UsernameToken)与特定用户名匹配的密码。对于本文使用的公开密匙加密,回调必须提供用于保护 keystore 内的私有密匙的密码。并且需要对客户机(为客户机私有密匙提供密码)和服务器(为服务器私有密匙提供密码)使用单独的回调。清单 2 展示了回调的客户端版本:

清单 2. 客户机密码回调

/**   * Simple password callback handler. This just checks if the password for the private key   * is being requested, and if so sets that value.   */ public class PWCBHandler implements CallbackHandler {    public void handle(Callback[] callbacks) throws IOException {      for (int i = 0; i < callbacks.length; i++) {        WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i];        String id = pwcb.getIdentifer();        int usage = pwcb.getUsage();        if (usage == WSPasswordCallback.DECRYPT ||           usage == WSPasswordCallback.SIGNATURE) {          // used to retrieve password for private key          if ("clientkey".equals(id)) {            pwcb.setPassword("clientpass");          }        }      }    } }

清单 2 中的回调旨在支持使用同一个公开-私有密匙对进行签名和解密,因此将在两种情况下进行检查并对任意一种情况返回相同的密码。

清单 1 中的 WS-Policy 用于客户机,与此相对应的是用于服务器的 WS-Policy(示例代码中的 sign-policy-server.xml),两者只在 Rampart 配置的细节方面略有不同。同样,清单 2 密码回调类的服务器版本只在标识符值和返回的密码方面有所差异。

运行示例应用程序

build.properties 文件引用了将由示例应用程序使用的 client.policy 和 server.policy 文件。在文件的补充版中分别被设置为 sign-policy-client.xml 和 sign-policy-server.xml,因此您应当只需要构建应用程序。通过将控制台打开到 jws05code 目录并输入 ant,您可以使用 Ant 完成任务。如果所有内容均配置正确,那么应当在 jws05code 目录中得到一个 library-signencr.aar Axis2 服务归档文件。通过使用 Axis2 Administration 页面上传 .aar 文件,将该服务部署到您的 Axis2 服务器安装中,然后通过在控制台输入 an

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