`
longgangbai
  • 浏览: 7330792 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

基于Xfire SOAP Header的WebService安全验证

阅读更多

WebSerice是一种开放的web服务,任何人都可以访问,但我们有时候需要考虑只有付费用户才能使用WS,所以,我们就需要对WS加入安全验证机制,当然,可以利用防火墙的IP过滤,web应用的配置从最外层去隔离非法用户,但在内层,我们也可以使用SOAP Header的方式,由客户端发送验证数据,服务端验通过后基WS访问权限

首先根据我的这篇Blog

http://blog.csdn.net/daryl715/archive/2007/07/25/1707161.aspx

配置WS Server和WS Client,其中Client端的测试代码类名由Client改为ClientTest,因为我们要用到Xfire的一个名为Client的类

 

首先我们编写服务端验证类继承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);
              }

          }

 

}

 

下面是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);
     }

 

}

 

 

 

     
分享到:
评论

相关推荐

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

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

    .net调用java xfire发布的webservice封装soapheader头信息

    标题与描述均提到了“.NET调用Java XFire发布的WebService封装SOAPHeader头信息”,这是一个涉及跨平台服务调用的问题,具体来说是关于如何在.NET环境中调用由Java使用XFire框架发布的WebService,并正确处理...

    webservice Soap和XFire2种方式代码列子

    综上所述,"webservice Soap和XFire2种方式代码列子"的压缩包可能包含使用SOAP协议和XFire框架创建Web服务的示例代码。通过学习这些代码,开发者可以更好地理解如何在Java环境中构建和消费SOAP服务,以及XFire在其中...

    关于使用xfire创建webservice,并且使用消息头的示例

    在给定的“SoapHeader”文件中,可能包含了示例代码或者配置,演示了如何在XFire服务中使用SOAP消息头。这些示例通常会展示如何创建自定义消息头类,以及如何在XFire的配置中设置消息处理器。通过解析和理解这些示例...

    XFIRE webservice 开发实例

    XFIRE的Web Service通常基于SOAP协议,这是一种结构化的XML消息传递标准,用于在不同系统间交换数据。你需要熟悉SOAP请求的构造,包括Header部分(包含API密钥)和Body部分(包含具体的请求参数)。 3. **获取游戏...

    soapHeader验证例子

    WebService验证soapHeader.txt文件很可能是详细描述了如何配置MyEclipse项目,创建服务,设置SOAP Header,以及运行客户端和服务端的步骤。这份文档可能包含了XML Schema定义(XSD)文件,用于定义服务接口,以及...

    WebService与XFire

    **WebService与XFire** 在IT领域,WebService是一种基于开放标准(如XML、SOAP、WSDL和UDDI)的Web应用程序接口(API)设计模式,它允许不同系统间的互操作性,通过HTTP协议进行通信。WebService的核心技术包括简单...

    Webservice-CXF实用手册学习大全

    - Cxf拦截器特征机制:通过拦截器可以在WebService的请求和响应过程中插入自定义逻辑,用于实现安全验证、日志记录等功能。 - 安全机制:包括用户认证、数字签名和混合验证等,确保WebService通信的安全性。 综上...

    WebService&SOA&ESB入门介绍(手把手xfire开发WS入门实例)

    WS-Security是Web Service安全标准,用于保护Web Service通信过程中的数据安全,包括身份验证、加密、完整性检查等。 【WS-Notification】 WS-Notification定义了一组协议,用于构建发布/订阅模型的事件通知系统,...

    android 调用webservice 有源码+jar

    SOAP是一种轻量级的、基于XML的协议,用于在Web上交换结构化的和类型化的信息。在Android中调用Webservice,通常使用SOAP协议封装请求和解析响应。SOAP消息以XML格式表示,包含四个主要部分:Envelope、Header、...

    深入浅出WebService

    在Java平台上,常见的WebService框架有Spring+XFire、Axis和CXF。本文重点讨论CXF,因为它是轻量级且易于扩展的。CXF实现了JAX-WS 2.0规范,可以无缝集成Spring框架,支持多种传输协议(如HTTP、JMS、Corba)和数据...

    Webservice接口快速开发指导

    - SOAP协议特性包括:可扩展性(通过SOAP扩展可以添加自定义功能)、平台和语言独立(基于XML),以及标准支持(如WSDL和UDDI)。 2. Web Service开发组件介绍 - WebService开发组件是实现Web Service接口的关键...

    webservice开发方式,报文修改

    在IT行业中,Web Service是一种基于网络的通信协议,允许不同系统之间进行数据交换。本文将深入探讨Web Service的开发方式,特别是针对报文修改和兼容性问题,以解决与第三方服务端对接时遇到的挑战。 首先,Web ...

    WebService详解

    在Web开发领域,WebService是一种基于开放标准(如XML、SOAP、WSDL和UDDI)的,能够实现跨平台、跨语言通信的技术。它允许不同系统间的应用程序通过网络进行交互,实现了分布式计算的重要一环。本文档详细阐述了...

    webService 资料包

    WebService是一种基于互联网的、平台和语言无关的接口定义和通信标准,它允许不同系统间的应用程序之间进行交互。WebService的核心是利用XML(可扩展标记语言)来描述服务,通过SOAP(简单对象访问协议)进行数据...

    webservice笔记

    SOAP消息由信封(Envelope)、头部(Header)和体部(Body)组成,其中信封用于标识消息的基本结构,头部包含消息处理的额外信息,体部则包含实际的数据或方法调用。 ##### 3. XML(Extensible Markup Language) ...

    webservice开发资料

    Web服务(Web Service)是一种基于互联网的、使用标准XML(Extensible Markup Language)进行通信的软件系统,允许不同平台的应用程序之间交换数据和执行操作。它利用SOAP(Simple Object Access Protocol)作为消息...

Global site tag (gtag.js) - Google Analytics