一、创建web services 工程(XFire)
二、加入身份验证功能
1、首先编写服务端验证类,继承AbstractHandler类
package test;
import org.codehaus.xfire.MessageContext;
import org.codehaus.xfire.handler.AbstractHandler;
import org.jdom.Element;
public class AuthenticationHandler extends AbstractHandler {
public void invoke(MessageContext cfx) throws Exception {
if (cfx.getInMessage().getHeader() == null) {
throw new org.codehaus.xfire.fault.XFireFault("请求必须包含验证信息",
org.codehaus.xfire.fault.XFireFault.SENDER);
}
Element token = cfx.getInMessage().getHeader().getChild(
"AuthenticationToken");
if (token == null) {
throw new org.codehaus.xfire.fault.XFireFault("请求必须包含身份验证信息",
org.codehaus.xfire.fault.XFireFault.SENDER);
}
String username = token.getChild("Username").getValue();
String password = token.getChild("Password").getValue();
try {
// 进行身份验证 ,只有abcd@1234的用户为授权用户
if (username.equals("abcd") && password.equals("1234"))
// 这语句不显示
System.out.println("身份验证通过");
else
throw new Exception();
} catch (Exception e) {
throw new org.codehaus.xfire.fault.XFireFault("非法的用户名和密码",
org.codehaus.xfire.fault.XFireFault.SENDER);
}
}
}
2、Client构造授权信息
package test;
import org.codehaus.xfire.MessageContext;
import org.codehaus.xfire.handler.AbstractHandler;
import org.jdom.Element;
public class ClientAuthenticationHandler extends AbstractHandler {
private String username = null;
private String password = null;
public ClientAuthenticationHandler() {
}
public ClientAuthenticationHandler(String username,String password) {
this.username = username;
this.password = password;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public void invoke(MessageContext context) throws Exception {
//为SOAP Header构造验证信息
Element el = new Element("header");
context.getOutMessage().setHeader(el);
Element auth = new Element("AuthenticationToken");
Element username_el = new Element("Username");
username_el.addContent(username);
Element password_el = new Element("Password");
password_el.addContent(password);
auth.addContent(username_el);
auth.addContent(password_el);
el.addContent(auth);
}
}
3、修改services.xml为webservice绑定Handler
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service xmlns="http://xfire.codehaus.org/config/1.0">
<name>Hello</name>
<namespace>http://test/HelloService</namespace>
<serviceClass>test.IHello</serviceClass>
<implementationClass>test.HelloImpl</implementationClass>
<inHandlers>
<handler handlerClass ="test.AuthenticationHandler" ></handler >
</inHandlers>
<style>wrapped</style>
<use>literal</use>
<scope>application</scope>
</service>
</beans>
4、新建一个ClientTest,用来测试
package test;
import java.lang.reflect.Proxy;
import java.net.MalformedURLException;
import org.codehaus.xfire.client.*;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
public class ClientTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
Service serviceModel = new ObjectServiceFactory().create(IHello.class);
IHello service = (IHello) new XFireProxyFactory().create(serviceModel,
"http://dracom-d1514b82:8080/web_services3/services/Hello");
XFireProxy proxy = (XFireProxy)Proxy.getInvocationHandler(service);
Client client = proxy.getClient();
//发送授权信息
client.addOutHandler(new ClientAuthenticationHandler("abcd","1234"));
//输出调用web services方法的返回信息
System.out.println(service.getMessage("你好aaa"));
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
分享到:
相关推荐
XFire和JAX(Java API for XML)都是在Java环境中实现WebService的重要工具,它们分别提供了不同的方法来处理身份验证,确保数据安全传输。 XFire是早期的一个开源项目,它是一个快速、灵活的Web服务框架,支持SOAP...
它还提供了一种机制来处理Web服务的安全性,例如基于WS-Security的标准,可以实现用户身份验证和消息完整性保护。 Spring框架以其模块化设计和强大的依赖注入闻名,它允许开发者轻松地管理对象的生命周期和配置。...
4. **安全性**:xfire支持SSL加密和身份验证,确保数据在传输过程中的安全,满足企业级数据同步的安全需求。 三、数据同步服务端设计 数据同步服务端基于xfire框架,主要负责以下任务: 1. **接收请求**:服务端...
HTTP用于无状态的信息交换,而HTTPS则提供加密和身份验证,确保用户数据的安全。 2. **服务器架构**:Xfire的webserver可能是基于多线程、事件驱动或者异步I/O的。例如,它可能采用了像Apache HTTP Server这样的预...
它支持多种安全机制,包括数字签名、消息完整性检查、用户身份验证和数据加密等。xfire1.2.6中的WS-Security实现使得开发者可以方便地在Java平台上集成这些功能。 首先,我们需要了解xfire中如何配置WS-Security。...
为了利用Xfire API,开发者首先需要注册获得API密钥,这个密钥用于识别开发者身份并在请求中验证。然后,开发者可以使用各种编程语言(如Python、Java、C#、JavaScript等)编写客户端代码,通过HTTP请求调用API接口...
2. **设置认证和配置**:如果Web服务需要身份验证或其他特定的HTTP头信息,可以在代理类实例化时设置。 3. **调用服务方法**:通过代理对象调用Web服务提供的方法,传入相应的参数。 4. **处理响应**:服务方法的...
本示例将详细解释如何利用xfire框架搭建一个包含SOAP Header身份验证和WS-Security身份验证的Web Service。 首先,让我们了解`xfire`。Xfire(现为Apache CXF的一部分)是一个开源的Java框架,它简化了创建和使用...
9. **xfire-ws-security.jar**:提供了Web服务安全相关的功能,如WS-Security标准的支持,用于实现身份验证和加密。 10. **xfire-transport.jar**:包含了各种传输协议(如HTTP、FTP等)的实现,使得XFire能够适应...
4. **X.509证书**: WS-Security也支持使用X.509数字证书进行身份验证,提供基于公钥基础设施(PKI)的身份验证和加密。 5. **SOAP Message Security**: 它定义了如何在SOAP消息中插入安全元素,如Timestamp、...
4. 安全可靠:xfire提供了一个安全的WebService开发环境,支持SSL/TLS加密、身份验证和授权等功能。 xfire的应用场景包括: 1. 企业应用集成:xfire可以用于企业应用集成,实现不同系统之间的数据交换和集成。 2. ...
例如,可以使用Spring Security(原Acegi)来保护Web服务,确保只有经过身份验证的用户才能访问。 7. **异常处理**:Spring的异常翻译功能可以将服务端的业务异常转换为SOAP错误,使客户端能够获得更友好的错误信息...
9. **安全性考虑**: 当访问Web服务时,需要考虑身份验证、授权、加密等安全问题。XFire支持WS-Security等安全标准,可以实现安全的Web服务通信。 10. **性能优化**: 通过缓存、线程池和HTTP连接管理等方式,可以...
1. **用户登录验证**:通过xfire服务端进行用户身份验证,确保只有合法用户可以接入游戏。 2. **游戏状态同步**:实时同步游戏中玩家的位置、动作等状态信息,保证多人在线游戏的同步性。 3. **消息传递**:实现玩家...
【基于XFire实施WS-Security】的详细解析 在Web Service的世界中,...通过WSS4J和XFire的Handler机制,开发人员可以方便地对SOAP报文进行加密、签名和身份验证等操作,从而确保Web Service在分布式环境中的安全性。
7. **安全与认证**:为了确保服务的安全性,XFire提供了多种安全模型,如基于证书的身份验证、WS-Security等。开发者可以根据需求选择合适的策略进行配置。 8. **性能优化**:XFire1.2版本还支持缓存、线程池、压缩...
7. **安全与认证**:在实际应用中,Web服务可能会涉及到安全问题,如身份验证和授权。Spring和XFire提供了支持WS-Security标准的机制,可以添加证书、用户名/密码等安全配置到Web服务客户端。 8. **测试与调试**:...
此外,如果客户端和服务端之间需要身份验证和授权,可能还需要安全相关的库,如Spring Security。 整合XFire和Spring的关键步骤通常包括: 1. 添加相关依赖:在项目构建配置文件(如Maven的pom.xml或Gradle的build....