wss4j和axis2实现WS-Security(1)
转自:http://hi.baidu.com/zhaopengletter/blog/item/a85945915dcf378ba877a448.html
?
经过了一个星期的晕头转向之后终于对wss4j和axis2实现WS-Security 有点了解,写了一个demo如下:
Wss4j是apache开发的,标准实现WS-Security(WebService安全)的开源项目,它提供了用户名令牌环验证(UsernameToken)和传递消息时保证信息的完整性和真实性等一些WebService安全保障。
encoding="UTF-8"?>
<service name="wsc">
????<operation name="echo">
???????<messageReceiver
????????class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
????</operation>
????<parameter name="ServiceClass" locked="false">
???????com.neusoft.wss4j.rempart.demo.services.SimpleService
????</parameter>
????<module ref="rampart" />
????<parameter name="InflowSecurity">
???????<action>
???????????<items>Timestamp Signature</items>
???????????<signaturePropFile>
??????????????keys/service.properties
???????????</signaturePropFile>
???????</action>
????</parameter>
????<parameter name="OutflowSecurity">
???????<action>
???????????<items>Timestamp Signature</items>
???????????<user>service</user>
???????????<passwordCallbackClass>
??????????????com.neusoft.wss4j.rempart.demo.services.PWCBHandler
???????????</passwordCallbackClass>
???????????<signaturePropFile>
??????????????keys/service.properties
???????????</signaturePropFile>
???????????<signatureKeyIdentifier>
??????????????DirectReference
???????????</signatureKeyIdentifier>
???????</action>
????</parameter>
</service>
?
服务器wsc中有几个方法就需要配置几个<operation></operation>
echo为wsc服务器类中的方法。wsc为服务的名字也就是后边的打包服务器端wsc.aar的名字。着重看下红色和粉色字体部分,红色这部分是客户端传来信息用数字签名来解密客户端传过来的加密信息本例通过keys文件夹下的service.properties这个文件找到service.jks对信息进行解密,粉色部分是服务器端把输出向客户端的信息加密用的,本例通过keys文件夹下的service.properties这个文件找到service.jks对信息加密的。
service.properties的内容如下:
org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
org.apache.ws.security.crypto.merlin.keystore.type=jks
org.apache.ws.security.crypto.merlin.keystore.password=apache
org.apache.ws.security.crypto.merlin.file=keys/service.jks
写明了加密文件的类型,文件密码,文件名称。