`
javaoldboy
  • 浏览: 71274 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

xfire身份验证

阅读更多

今天小研究了下xfire,eclipse下建xfire工程和建新的xifire web service很方便,主要代码有下面几个:

 

   web.xml里面配置xfireServlet.这跟struts是一个原理,相当于一个前端控制器,所有的ws请求都通过这个     XFireConfigurableServlet转发。XFireConfigurableServlet再通过读取services.xml去mapping具体的业务bean。

<servlet>
    <servlet-name>XFireServlet</servlet-name>
    <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>XFireServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
  </servlet-mapping>

 

services.xml中配置一个新的web service:

	      <service>
		<name>beanservice</name>
		<serviceClass>com.mypack.Hello</serviceClass>
		<implementationClass>com.mypack.HelloImpl</implementationClass>
		<style>wrapped</style>
		<use>literal</use>
		<inHandlers>
			<handler handlerClass="com.mypack.XfireAuthenticationHandler"></handler>
		</inHandlers>
		<scope>application</scope>
	      </service>

 其中inHandlers是为了实现handler方式的安全验证。

XfireAuthenticationHandler类从org.codehaus.xfire.handler.AbstractHandler继承,需要重写invoke方法实现自己的验证逻辑:

 public void invoke(MessageContext ctx) throws Exception {
  // Check if header exists
  
  Element header = ctx.getInMessage().getHeader();
  if (header == null) {
   throw new XFireRuntimeException("Missing SOAP Header");
  }
  // Does it have version tag
  Element name = header.getChild("USERNAME",Namespace.getNamespace(NS));
  Element pass = header.getChild("PASSWORD",Namespace.getNamespace(NS));
  if(name.getValue().equals(USERNAME) && pass.getValue().equals(PASSWORD)){
   System.out.println("验证通过");
  }
  else{
   System.out.println("验证未通过");
   throw new XFireRuntimeException("Authentication Failure");
  }
  ctx.setProperty("USERNAME", USERNAME);
  ctx.setProperty("PASSWORD", PASSWORD);
 }

 

这样服务端就基本完成了。

客户端需要在原有基础上加上相应的身份验证,新建ClientHeaderHandler类,一样需要从org.codehaus.xfire.handler.AbstractHandler继承,一样重写invoke方法:

	private static final String USERNAME = "87654321";
	private static final String PASSWORD = "12345678";
	private static final String NS = "http://xfire.codehaus.org/biansutao";

	public void invoke(MessageContext ctx) throws Exception {
		Element header = ctx.getOutMessage().getOrCreateHeader();
		header.addContent(new Element("USERNAME", NS).addContent(USERNAME));
		header.addContent(new Element("PASSWORD", NS).addContent(PASSWORD));
	}

 客户端调用服务的方法:

                        String wsdl = "/beanservice.wsdl"; //对应的WSDL文件
	     Resource resource = new ClassPathResource(wsdl); 
	       Client client = new Client(resource.getInputStream(), null); //根据WSDL创建客户实例
	       client.addOutHandler(new ClientHeaderHandler());
	       Object[] objArray = new Object[1];
	       objArray[0] = "eric";
	       //调用特定的Web Service方法
	       Object[] results = client.invoke("sayHello", objArray);

 其中client.addOutHandler(new ClientHeaderHandler());是加入身份验证。

 

这样,一个带身份验证的xfire版helloworld就完成了。

分享到:
评论
2 楼 CoderDream 2014-10-01  
能给出完整代码么?
1 楼 hanjiangit 2012-04-12  
NS是什么?

相关推荐

    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