xfire的webservice安全机制之签名
服务端配置修改点:
applicationContext-webservice.xml文件:
<property name="inHandlers">
<list>
<ref bean="domInHandler" />
<ref bean="wss4jInHandlerSign"/>
<ref bean="validateUserTokenHandler" />
</list>
</property>
<bean id="wss4jInHandlerSign" class="org.codehaus.xfire.security.wss4j.WSS4JInHandler">
<property name="properties">
<props>
<prop key="action">Signature</prop>
<prop key="signaturePropFile">
insecurity_sign.properties
</prop>
</props>
</property>
</bean>
新增配置文件insecurity_sign.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=dv110.com
org.apache.ws.security.crypto.merlin.file=tianyi_public.jks
客户端配置文件:
只需要修改XFireClientFactory.java文件:
//签名
getSign(obj);
public void getSign(Object service){
Client client = ((XFireProxy) Proxy.getInvocationHandler(service)).getClient();
//挂上WSS4JOutHandler,提供认证
client.addOutHandler(new DOMOutHandler());
Properties properties = new Properties();
properties.setProperty(WSHandlerConstants.ACTION, WSHandlerConstants.SIGNATURE);
// User in keystore
properties.setProperty(WSHandlerConstants.USER, "safedv");
// This callback is used to specify password for given user for keystore
properties.setProperty(WSHandlerConstants.PW_CALLBACK_CLASS, PasswordHandler.class.getName());
// Configuration for accessing private key in keystore
properties.setProperty(WSHandlerConstants.SIG_PROP_FILE, "outsecurity_sign.properties");
properties.setProperty(WSHandlerConstants.SIG_KEY_ID, "IssuerSerial");
client.addOutHandler(new WSS4JOutHandler(properties));
}
客户端增加配置文件,outsecurity_sign.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=dv110.com
org.apache.ws.security.crypto.merlin.file=tianyi_private.jks
附录,生成签名的各个KEY,其实就是和ENC反过来操作,私匙签名,公匙解
1、通过别名和密码创建私密钥到keystore:
C:\>keytool -genkey -alias safedv -keypass safedv -keystore tianyi_private.jks -storepass dv110.com -dname "cn=dv110" -keyalg RSA
2、证书:
C:\>keytool -selfcert -alias safedv -keystore tianyi_private.jks -storepass dv110.com -keypass safedv
3、导出公钥到key.rsa:
C:\>keytool -export -alias safedv -file safedv.rsa -keystore tianyi_private.jks -storepass dv110.com
4、导入公钥到新的keystore中:
C:\>keytool -import -alias safedv -file safedv.rsa -keystore tianyi_public.jks -storepass dv110.com
分享到:
相关推荐
xfire webservice 上传下载源码 一个完整的demo
spring集成xfire webservice实现远程调用 将项目发布后,点击http://localhost:8080/SpringWebServiceTest/services/HelloWS?wsdl即可 其中也有客户端的调用,自己试试吧。
xfire的一个完整实例,不过我建议大家,学习完理论知识后,根据自己学得知识,手动练习一下,遇到异常就百度,一下,这样比较好!
spring+xfire( 编写webservice完整配置+案例)
xfire实现webservice实例,XFire WebService开发快速起步
grails+Xfire webservice
XFire WebService 精简包 搭建XFire WebService必备包
经本人仔细研究最少导入8个包,就可以做一个简单的webservice的应用,有不同意见着,欢迎讨论:站内留言
XFire Webservice 服务器端
xfire webservice wsdl 文件中字段名称变化
Xfire Webservice的例子,简单易懂~ 发布服务和调用都很简单~ 自己整理了下~ 没事的拿去看下就知道啦~
用XFire开发WebService Spring注解
XFire建立Webservice实例,入门级别,适XFire建立Webservice实例,入门级别,XFire建立Webservice实例,入门级别,适合初学者适合初学者合初学者
xfire简单实例发布webservice,引用到2个jar包的简单例子
java使用XFire调用webService接口
xFire WebService 实例开发
此程序demo详细描述的从发布接口到调用接口的全部过程,详细描述了Xfire调用webservice参数无法传递的问题。
一个基于xfire开发的Webservice小例子,初学者可以看看!
xfire webservice 集成spring客户端封装成到一个类打包到客户端就像调静态方法一样
XFire Webservice 客户端