快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
   >JKS</ramp:property>        <ramp:property name="org.apache.ws.security.crypto.merlin.file"          >client.keystore</ramp:property>        <ramp:property          name="org.apache.ws.security.crypto.merlin.keystore.password"          >nosecret</ramp:property>       </ramp:crypto>      </ramp:encryptionCrypto>     </ramp:RampartConfig>    </wsp:All>   </wsp:ExactlyOne> </wsp:Policy>

Java Web服务 - Axis2 WS-Security签名和加密(7)

时间:2011-02-02 IBM Dennis Sosnoski

仅使用加密不行吗?

如果可以提供一个仅对 Axis2 和 Rampart 使用加密的示例会很不错,但是这个功能在 Axis2 1.4(及更早版本)中被去掉了。1.5 发行版提供了一个代码补丁。如果您使用的是 Axis2 1.5 或更高版本(以及相应的 Rampart 发行版),那么可以尝试使用 encr-policy-client.xml 和 encr-policy-server.xml 策略文件来在不使用任何签名的情况下对每个消息体进行加密。

使用加密不需要 用到 清单 4 策略中的第一处修改,但这是个好主意。在使用加密时,客户机在发送初始请求时需要用到服务器证书(因为要使用证书中的服务器公开密匙进行加密)。由于客户机需要具有服务器证书,并不表示要将服务器证书发送给客户机。清单 4 策略中经过修改的 <sp:RecipientToken> 反映了这个用例,表示不应发送证书(sp:IncludeToken=".../Never"),而应当使用 thumbprint reference(实际上就是一个证书散列)。thumbprint reference 要比完整的证书更加简洁,因此使用引用可以减小消息的大小和处理开销。

实际实现加密的修改是新添的 <sp:EncryptedParts> 元素。这个元素表示将要使用加密,而内容 <sp:Body> 元素表示需要对消息中的 SOAP 消息体进行加密。

清单 4 中新添的 Rampart 配置信息包含一个 <ramp:encryptionUser> 元素和一个 <ramp:encryptionCrypto> 元素,前者为用于加密信息的公开密匙(即证书)分配一个别名,后者指出如何访问包含证书的 keystore。在示例应用程序中,对用于签名的私有密匙和用于加密的公开密匙使用了相同的 keystore,因此 <ramp:encryptionCrypto> 元素只不过是对现有的 <ramp:signatureCrypto> 元素进行重命名后的副本。

在运行时,Rampart 需要获得用于保护私有密匙的密码,这个私有密匙用于对已加密数据进行解密。前面的密码回调用于获得私有密匙密码(用于实现签名),如 清单 2 所示,还提供了用于解密的密码,因此不需要做任何修改。

运行示例应用程序

要尝试运行使用了签名和加密的示例应用程序,首先需要编辑 build.properties 文件。将客户机策略行修改为 client.policy=signencr-policy-client.xml,将服务器策略修改为 server-policy=signencr-policy-server.xml。随后可以通过运行 ant 重新构建应用程序,将生成的 library-signencr.aar 文件部署到 Axis2 安装中,然后运行 ant run 来进行尝试。

清单 5 显示了依次使用签名和加密后的请求-消息捕捉,与 清单 3 中以粗体显示的服务器版本有着明显的不同:

清单 5. 使用了签名和加密的消息

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"    xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">   <soapenv:Header>    <wsse:Security xmlns:wsse=".../oasis-200401-wss-wssecurity-secext-1.0.xsd"      soapen

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