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;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值