`

XFire身份验证

阅读更多

一、创建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();
   }
}
}

 

 

分享到:
评论

相关推荐

    WebService之XFire和Jax实现身份验证

    XFire和JAX(Java API for XML)都是在Java环境中实现WebService的重要工具,它们分别提供了不同的方法来处理身份验证,确保数据安全传输。 XFire是早期的一个开源项目,它是一个快速、灵活的Web服务框架,支持SOAP...

    xfire+spring+安全认证

    它还提供了一种机制来处理Web服务的安全性,例如基于WS-Security的标准,可以实现用户身份验证和消息完整性保护。 Spring框架以其模块化设计和强大的依赖注入闻名,它允许开发者轻松地管理对象的生命周期和配置。...

    xfire数据同步服务端

    4. **安全性**:xfire支持SSL加密和身份验证,确保数据在传输过程中的安全,满足企业级数据同步的安全需求。 三、数据同步服务端设计 数据同步服务端基于xfire框架,主要负责以下任务: 1. **接收请求**:服务端...

    Xfire案例,webserver——Xfire案例

    HTTP用于无状态的信息交换,而HTTPS则提供加密和身份验证,确保用户数据的安全。 2. **服务器架构**:Xfire的webserver可能是基于多线程、事件驱动或者异步I/O的。例如,它可能采用了像Apache HTTP Server这样的预...

    xfire1.2.6 ws-security示例

    它支持多种安全机制,包括数字签名、消息完整性检查、用户身份验证和数据加密等。xfire1.2.6中的WS-Security实现使得开发者可以方便地在Java平台上集成这些功能。 首先,我们需要了解xfire中如何配置WS-Security。...

    Xfire API,Xfire帮助文档

    为了利用Xfire API,开发者首先需要注册获得API密钥,这个密钥用于识别开发者身份并在请求中验证。然后,开发者可以使用各种编程语言(如Python、Java、C#、JavaScript等)编写客户端代码,通过HTTP请求调用API接口...

    xfire客户端生成

    2. **设置认证和配置**:如果Web服务需要身份验证或其他特定的HTTP头信息,可以在代理类实例化时设置。 3. **调用服务方法**:通过代理对象调用Web服务提供的方法,传入相应的参数。 4. **处理响应**:服务方法的...

    使用xfire框架搭建webService的一个demo

    本示例将详细解释如何利用xfire框架搭建一个包含SOAP Header身份验证和WS-Security身份验证的Web Service。 首先,让我们了解`xfire`。Xfire(现为Apache CXF的一部分)是一个开源的Java框架,它简化了创建和使用...

    XFire的所有jar包

    9. **xfire-ws-security.jar**:提供了Web服务安全相关的功能,如WS-Security标准的支持,用于实现身份验证和加密。 10. **xfire-transport.jar**:包含了各种传输协议(如HTTP、FTP等)的实现,使得XFire能够适应...

    XFire中实现WS-Security经典

    4. **X.509证书**: WS-Security也支持使用X.509数字证书进行身份验证,提供基于公钥基础设施(PKI)的身份验证和加密。 5. **SOAP Message Security**: 它定义了如何在SOAP消息中插入安全元素,如Timestamp、...

    xfire调用webservice

    4. 安全可靠:xfire提供了一个安全的WebService开发环境,支持SSL/TLS加密、身份验证和授权等功能。 xfire的应用场景包括: 1. 企业应用集成:xfire可以用于企业应用集成,实现不同系统之间的数据交换和集成。 2. ...

    xfire+Spring整合

    例如,可以使用Spring Security(原Acegi)来保护Web服务,确保只有经过身份验证的用户才能访问。 7. **异常处理**:Spring的异常翻译功能可以将服务端的业务异常转换为SOAP错误,使客户端能够获得更友好的错误信息...

    xfire 访问webservice 需要的jar

    9. **安全性考虑**: 当访问Web服务时,需要考虑身份验证、授权、加密等安全问题。XFire支持WS-Security等安全标准,可以实现安全的Web服务通信。 10. **性能优化**: 通过缓存、线程池和HTTP连接管理等方式,可以...

    xfire服务端

    1. **用户登录验证**:通过xfire服务端进行用户身份验证,确保只有合法用户可以接入游戏。 2. **游戏状态同步**:实时同步游戏中玩家的位置、动作等状态信息,保证多人在线游戏的同步性。 3. **消息传递**:实现玩家...

    基于XFire实施WS-Security

    【基于XFire实施WS-Security】的详细解析 在Web Service的世界中,...通过WSS4J和XFire的Handler机制,开发人员可以方便地对SOAP报文进行加密、签名和身份验证等操作,从而确保Web Service在分布式环境中的安全性。

    XFire1.2使用例子

    7. **安全与认证**:为了确保服务的安全性,XFire提供了多种安全模型,如基于证书的身份验证、WS-Security等。开发者可以根据需求选择合适的策略进行配置。 8. **性能优化**:XFire1.2版本还支持缓存、线程池、压缩...

    xfire+spring+webservice+client

    7. **安全与认证**:在实际应用中,Web服务可能会涉及到安全问题,如身份验证和授权。Spring和XFire提供了支持WS-Security标准的机制,可以添加证书、用户名/密码等安全配置到Web服务客户端。 8. **测试与调试**:...

    XFire+Spring整合的依赖包

    此外,如果客户端和服务端之间需要身份验证和授权,可能还需要安全相关的库,如Spring Security。 整合XFire和Spring的关键步骤通常包括: 1. 添加相关依赖:在项目构建配置文件(如Maven的pom.xml或Gradle的build....

Global site tag (gtag.js) - Google Analytics