`
阳光小菜鸟
  • 浏览: 96852 次
  • 性别: Icon_minigender_2
  • 来自: 郑州
社区版块
存档分类
最新评论

xfire+wss4j实现WS-Security (三)

阅读更多
客户端代码:
package clienttest;

import java.util.ArrayList;

import form.User;

public interface DxTest1 {
   public ArrayList<User> getDx();
   //public String getD(String a);
}


package clienttest;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.lang.reflect.Proxy;
import java.util.List;
import java.util.Properties;

import org.apache.ws.security.handler.WSHandlerConstants;
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.Client;
import org.codehaus.xfire.client.XFireProxy;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.security.wss4j.WSS4JOutHandler;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import org.codehaus.xfire.util.dom.DOMOutHandler;

import form.User;

public class ClientTest {	
	 private WSS4JOutHandler wsOut;
	 private Service srvcModel;
	 private Client client;
	public void testClient() throws Exception {	
		
//		第三种方式,也是常用的一种方式,直接根据WEBSERVICE地址来进行调用
		srvcModel = new ObjectServiceFactory().create(DxTest1.class);
		XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());
		String URL = "http://localhost:8080/server_sec/services/Test";
		try {
			DxTest1 srvc = (DxTest1) factory.create(srvcModel,URL);
			client = ((XFireProxy) Proxy.getInvocationHandler(srvc)).getClient();
			
	        client.addOutHandler(new DOMOutHandler());
	        
			Properties properties = new Properties();	
	        String actions =WSHandlerConstants.SIGNATURE;  
	        properties.setProperty(WSHandlerConstants.ACTION,actions);
			properties.setProperty(WSHandlerConstants.USER,"ws_security");
			properties.setProperty(WSHandlerConstants.SIG_PROP_FILE,"outsecurity.properties");
			//properties.setProperty(WSHandlerConstants.ENC_PROP_FILE,"/outsecurity.properties");
			//properties.setProperty(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PASSWORD_TEXT);
			properties.setProperty(WSHandlerConstants.PW_CALLBACK_CLASS, PasswordHandler.class.getName());
			properties.setProperty(WSHandlerConstants.SIG_KEY_ID,"IssuerSerial");    
	        //wsOut.setProperty(WSHandlerConstants.TTL_TIMESTAMP,"30");

			wsOut = new WSS4JOutHandler(properties);   
	        client.addOutHandler(wsOut);
	        
	        List<User> list = srvc.getDx();
			for(int i=0;i<list.size();i++){
				User dto =(User)list.get(i);
				System.out.println("-----"+dto.getId());
				System.out.println("-----"+dto.getName());
			}		
			
	        client.close();
		 }catch (Exception e){
		    e.printStackTrace();
		 }
	}
	
	public static void main(String args[]){
		try{
		 ClientTest t=new ClientTest();
		 t.testClient();
		 //t.getPro();
		}catch(Exception e){e.printStackTrace();}
	}
}

package clienttest;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.callback.UnsupportedCallbackException;
import org.apache.ws.security.WSPasswordCallback;

public class PasswordHandler implements CallbackHandler {
	private Map passwords = new HashMap();

    public PasswordHandler() {
        passwords.put("ws_security","keypassword");
    }

    public void handle(Callback[] callbacks) throws IOException,
            UnsupportedCallbackException {
        System.out.println("---------Handling Password!------------");
        WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
        String id = pc.getIdentifer();
        System.out.println("--------id:"+id+"--------password:"+(String) passwords.get(id));
        pc.setPassword((String)passwords.get(id));
    }

}

package form;

public class User {
String id="";
String name="";
public String getId() {
	return id;
}
public void setId(String id) {
	this.id = id;
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
}
分享到:
评论

相关推荐

    Spring+xFire+wss4j配置Helloworld完整版,Myeclipse项目服务端+客户端.rar

    在本教程中,我们将深入探讨如何使用Spring框架与xFire集成,同时利用wss4j进行WS-Security安全配置,创建一个"Hello World"的Web服务。这是一个完整的MyEclipse项目,包括服务端和客户端的工程,旨在帮助开发者快速...

    Spring+xFire+wss4j配置Helloworld完整Demo.rar

    标题中的"Spring+xFire+wss4j配置Helloworld完整Demo"揭示了这是一个关于整合Spring框架、xFire(现称为Apache CXF)和WSS4J的安全Web服务示例项目。这个项目旨在帮助开发者理解如何在Spring环境中配置并实现一个...

    基于XFire实施WS-Security

    XFire,作为一个Java Web Service框架,通过Apache的WSS4J库来支持WS-Security。WSS4J负责处理SOAP报文的安全性,包括加密、签名和身份验证等操作。XFire利用其Handler机制,在发送和接收SOAP报文的不同阶段注册相应...

    WS-Security 安全

    例如,BEA WebLogic Workshop 8.1提供了集成的WS-Security支持,而Apache WSS4J结合XFire则适用于开源环境下的应用开发。此外,跨平台的互操作性测试也是实施过程中不可或缺的环节,以确保在不同的系统间可以无缝...

    xfire验证签名加密详细

    在XFire中,我们可以利用WSS4J库来实现这些功能。WSS4J提供了API来设置安全策略,如添加用户名令牌、数字签名或消息加密。 为了启用WS-Security,我们需要在`xfire.xml`配置文件中定义安全策略。例如,我们可以配置...

    XFire完整jar包

    8. **wss4j-1.5.1.jar**:Web Services Security for Java (WSS4J)是一个用于处理Web服务安全的库,它支持WS-Security和其他相关的安全标准,确保Web服务之间的通信安全。 9. **wstx-asl-3.2.3.jar**:这是一个升级...

    xfire开发webservice所需jar包

    3. **wss4j-1.5.1.jar**:Web Services Security for Java,用于处理Web服务安全性的库,支持各种安全标准,如WS-Security、WS-Trust等,确保数据传输的安全性。 4. **wstx-asl-3.2.0.jar**:Woodstox是高效的XML...

    xifre 基本配置与密钥的生成

    它们可能会讲解如何在Xfire中集成SSL/TLS以实现传输层安全,或者如何配置WS-Security策略以启用用户名令牌、X.509证书验证等。 总的来说,掌握Xfire的基本配置和密钥管理是构建安全Web服务的关键。开发者需要理解...

    CXF webservice初学笔记

    - `wss4j-1.5.11.jar`:Web Services Security for Java,用于实现WS-Security标准,提供安全机制。 - `stringtemplate-3.2.jar`:StringTemplate是一个模板引擎,用于生成文本输出,如XML或HTML。 - `wsdl4j-...

    xfire集成spring的jar包

    7. **wss4j-1.5.1.jar**:Web Services Security (WSS4J)提供了SOAP消息的安全处理,包括签名和加密。 8. **wstx-asl-3.2.0.jar**:Woodstox是一个高性能的XML流解析器和生成器,它用于解析和生成XML流数据。 9. *...

    xfire jar包

    2. wss4j-1.5.1.jar:这个是Web Services Security for Java的库,用于提供Web服务的安全性,如数字签名、消息加密等。在使用xfire进行Web服务交互时,可能会用到这个库来确保通信的安全性。 3. wstx-asl-3.2.0.jar...

    面向服务的架构用XFIRE配置webService服务;

    4. wss4j-1.5.1.jar:Web Services Security for Java,提供了安全相关的API,如数字签名、加密和身份验证。 5. wstx-asl-3.2.0.jar:Woodstox XML处理器,提供高效的XML解析和生成。 6. jetty-6.1.2rc0.jar:Jetty...

    webservice客户端与服务器端的实现demo

    在XFire中,开发者可以通过配置或编程方式实现这些安全特性,如使用X509证书进行SSL/TLS加密,或者利用WS-Security标准添加SOAP头进行签名和加密。 5. 实现步骤: - **服务器端实现**:首先,定义服务接口和实现类...

    简单的WebService

    - `wss4j-1.5.1.jar`:Web Services Security for Java (WSS4J) 是Apache提供的一套安全库,用于实现SOAP消息的安全传输。 - `wsdl4j-1.6.1.jar`:包含了处理WSDL文档的库,Spring WS等工具会使用这个库解析和操作...

    xfire 初体验

    5. **wss4j-1.5.1.jar**:Web Services Security for Java,提供安全相关的支持,如数字签名和加密,确保Web服务的安全通信。 6. **wstx-asl-3.2.0.jar**:Woodstox,一个高效的XML流解析器和生成器,用于处理XML...

    web service开发包

    8. **wss4j-1.5.1.jar**:Web Services Security for Java (WSS4J) 是Apache提供的一个安全库,它为SOAP消息提供了安全功能,如签名、加密、以及WS-Security标准的支持。 9. **wstx-asl-3.2.0.jar**:Woodstox是...

Global site tag (gtag.js) - Google Analytics