`
阳光小菜鸟
  • 浏览: 95735 次
  • 性别: 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;
}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics