[转载]XFire中实现WS-Security

XFire中实现WS-Security
XFire中实现WS-Security完整编
在1.1中已经支持ws-security了。XFire通过wss4j提供ws-security支持。
一、 前提条件:
前 提条件要安装Unlimited Strength Jurisdiction Policy(可以在http: //java.sun.com/j2se/1.5.0/download.jsp或http: //java.sun.com/j2se/1.4.2/download.html下载)和Bouncy Castle(来自http: //BouncyCastle.org)。否则会出现无效算法(algorithm)或Key大小(Key Size)
为了能支持WS-Security必须添加两个Handler:inhandlers、outhandlers。
以下必须添加到inHandlers
1、 org.codehaus.xfire.security.wss4j.WSS4JInHandler:执行WS-Security相关的函数;
2、 org.codehaus.xfire.util.dom.DOMInHandler:为WS-Security从StAX 转换成DOM格式。
注:DOMInHandler必须引入Xalan 2.7.0,XFire默认没有引入。
以下添加到outHandlers:
1、 org.codehaus.xfire.security.wss4j.WSS4JOutHandler:执行WS-Security相关的函数;
2、 org.codehaus.xfire.util.dom.DOMOutHandler:为WS-Security从StAX 转换成DOM格式。
二、 安装Unlimited Strength Jurisdiction Policy和Bouncy Castle
1、 安装Unlimited Strength Jurisdiction Policy:把local_policy.jar和 US_export_policy.jar两个文件拷贝到:C:j2re1.4.2libsecurity下;(如果JRE安装在C: j2re1.4.2)。
2、 安装Bouncy Castle:
(1)、把下载的bcprov-jdk14-119.jar文件拷贝到两个地方:
一个在你安装的JDK目录中,比如:C:j2sdk1.4.0-rcjrelibext。另一个在你的JDK运行环境中,比如:C:Program FilesJavaj2re1.4.0-rclibext;
(2)、还要在对两个java.security进行修改:
我的在 C:j2sdk1.4.0-rcjrelibsecurityjava.security;C:Program FilesJavaj2re1.4.0-rclibsecurityjava.security;
  在java.security中加入 security.provider.6=org.bouncycastle.jce.provider.BouncyCastleProvider
三、 创建密钥:
1、 通过别名和密码创建私密钥到keystore:
keytool -genkey -alias ws_security -keypass keypassword -keystore privatestore.jks -storepass keyStorePassword -dname "cn=ws_security" -keyalg RSA
采用RSA算法进行处理。
2、 证书:
keytool -selfcert -alias ws_security -keystore privatestore.jks -storepass keyStorePassword -keypass keypassword
3、 导出公钥到key.rsa:
keytool -export -alias ws_security -file key.rsa -keystore privatestore.jks -storepass keyStorePassword
4、 导入公钥到新的keystore中:
keytool -import -alias ws_security -file key.rsa -keystore publicstore.jks -storepass keyStorePassword
5、 创建insecurity.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=keyStorePassword
org.apache.ws.security.crypto.merlin.alias.password=keypassword
org.apache.ws.security.crypto.merlin.keystore.alias=ws_security
org.apache.ws.security.crypto.merlin.file=META-INF/xfire/publicstore.jks
6、 创建outsecurity.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=keyStorePassword
org.apache.ws.security.crypto.merlin.alias.password=keypassword
org.apache.ws.security.crypto.merlin.keystore.alias=ws_security
org.apache.ws.security.crypto.merlin.file=META-INF/xfire/privatestore.jks
7、 把文件insecurity,outsecurity.properties,privatestore.jks和publicstore.jks复制到META-INF/xfire/下。
有关keytool的使用说明,请查看以下资料:
http://www.churchillobjects.com/c/11201e.html
http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/keytool.html
http://support.globalsign.net/en/objectsign/java.cfm
四、 实例:
1、 创建服务接口:
package example.services;
public interface BookService {
public String echo(String msg);
}
2、 创建服务实现类:
package example.services;
public class BookServiceImpl implements BookService {
public String echo(String msg){
return msg;
}
}
3、 配制webservices.xml文件:

BookService
example.services.BookService

example.services.BookServiceImpl


literal
application

handlerClass="org.codehaus.xfire.util.dom.DOMInHandler" />
class="org.codehaus.xfire.security.wss4j.WSS4JInHandler" xmlns="">


Signature

META-INF/xfire/insecurity.properties


META-INF/xfire/insecurity.properties


example.ws_security.PasswordHandler





来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/374079/viewspace-131493/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/374079/viewspace-131493/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值