WEB开发网: XFire中实现WS-Security完整编在1.1中已经支持ws-security了。XFire通过wss4j提供ws-security支持。一、前提条件:前提条件要安装UnlimitedStre
赞助商链接
中资源
>> 最新文章
>> 赞助商
>> 热门文章
WEB开发网文章阅读

XFire中实现WS-Security

作者:未知 文章来源:WEB开发者 更新时间:2006-11-5 21:43:00

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(SUN企业级应用的首选)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.2\lib\security\下;(如果JRE安装在C:\j2re1.4.2)。
2、    安装Bouncy Castle:
(1)、把下载的bcprov-jdk14-119.jar文件拷贝到两个地方:
一个在你安装的JDK目录中,比如:C:\j2sdk1.4.0-rc\jre\lib\ext。另一个在你的JDK运行环境中,比如:C:\Program Files\Java\j2re1.4.0-rc\lib\ext;
(2)、还要在对两个java.security进行修改:
我的在 C:\j2sdk1.4.0-rc\jre\lib\security\java.security;C:\Program Files\Java\j2re1.4.0-rc\lib\security\java.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(Unix平台最流行的WEB服务器平台).ws.security.crypto.provider=org.apache(Unix平台最流行的WEB服务器平台).ws.security.components.crypto.Merlin
org.apache(Unix平台最流行的WEB服务器平台).ws.security.crypto.merlin.keystore.type=jks
org.apache(Unix平台最流行的WEB服务器平台).ws.security.crypto.merlin.keystore.password=keyStorePassword
org.apache(Unix平台最流行的WEB服务器平台).ws.security.crypto.merlin.alias.password=keypassword
org.apache(Unix平台最流行的WEB服务器平台).ws.security.crypto.merlin.keystore.alias=ws_security
org.apache(Unix平台最流行的WEB服务器平台).ws.security.crypto.merlin.file=META-INF/xfire/publicstore.jks
6、    创建outsecurity.properties:
org.apache(Unix平台最流行的WEB服务器平台).ws.security.crypto.provider=org.apache(Unix平台最流行的WEB服务器平台).ws.security.components.crypto.Merlin
org.apache(Unix平台最流行的WEB服务器平台).ws.security.crypto.merlin.keystore.type=jks
org.apache(Unix平台最流行的WEB服务器平台).ws.security.crypto.merlin.keystore.password=keyStorePassword
org.apache(Unix平台最流行的WEB服务器平台).ws.security.crypto.merlin.alias.password=keypassword
org.apache(Unix平台最流行的WEB服务器平台).ws.security.crypto.merlin.keystore.alias=ws_security
org.apache(Unix平台最流行的WEB服务器平台).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(标准化越来越近了)文件:
    <service>
        <name>BookService</name>
        <serviceClass>example.services.BookService</serviceClass>
        <implementationClass>
            example.services.BookServiceImpl
        </implementationClass>
        <style>wrapped</style>
        <use>literal</use>
        <scope>application</scope>
        <inHandlers>
            <handler
                handlerClass="org.codehaus.xfire.util.dom.DOMInHandler" />
            <bean
                class="org.codehaus.xfire.security.wss4j.WSS4JInHandler" xml(标准化越来越近了)ns="">
                <property name="properties">
                    <props>
                        <prop key="action">Signature</prop>
                        <prop key="signaturePropFile">
                            META-INF/xfire/insecurity.properties
                        </prop>
                        <prop key="decryptionPropFile">
                            META-INF/xfire/insecurity.properties
                        </prop>
                        <prop key="passwordCallbackClass">
                            example.ws_security.PasswordHandler
                        </prop>
                    </props>
                </property>
            </bean>
        </inHandlers>
    </service>

Web: http://www.cncms.com.cn/ajax(动态网站静态化)/k271616.html

[1] [2]  下一页

百度搜索中共有相关主题
[阅读:次] [返回上一页] [打 印]
  • 相关文章
  • 本类热门