`

WebServic开发之Axis权限控制

    博客分类:
  • axis
阅读更多
开发好WebService并向外暴露服务后,由于WebService访问协议都是公开的,客户端只要知道服务的wsdl,就可以访问WebService中的方法。为防止非法的访问,可以要求客户端访问WebService时提供用户名和口令,只有在服务端通过身份认证后才可继续访问方法,否则请求被拒绝。

下面看一下Axis中如何使用用户名、口令来控制对WebService 的访问。

在myservices/WEB-INF下创建一个名为users.lst的文本文件,一行表示一对用户名、口令,之间用空格分隔,内容如下:
user1 password1

user2 password2




实现一个WebService,它有一个foo()方法,该方法打印出通过身份认证的用户的用户名,代码如下:

SecurityService.java


package chen.axisguide.ch6;



import org.apache.axis.MessageContext;



public class SecurityService {

       public void foo() {

            

              MessageContext msgContext = MessageContext.getCurrentContext();

              System.out.println("你已通过身份认证!");

              System.out.println("你的用户名: " + msgContext.getUsername());

            

       }

}






为了让 Axis知晓要对该服务的访问验证用户名和口令,需要在wsdd文件中增加一个Axis自带的处理器SimpleAuthenticationHandler,该处理器会从MessageContext中取出用户名和口令,并与users.lst中的用户名和口令进行比对,如果匹配,则通过验证,继续后面的处理,否则抛出(401)Unauthorized异常。

deploy.wsdd


<deployment xmlns="http://xml.apache.org/axis/wsdd/"

             xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

           

     <service name="SecurityService" provider="java:RPC" >

        <parameter name="className" value="chen.axisguide.ch6.SecurityService" />

        <parameter name="allowedMethods" value="*" />

        <requestFlow>

           <handler type="java:org.apache.axis.handlers.SimpleAuthenticationHandler" />

       </requestFlow>

     </service>

</deployment>








    客户端在访问WebService时,需要在 Call对象中设置在users.lst文件中已有的用户名和对应的口令。客户端代码如下:




package chen.axisguide.ch6;



import java.rmi.RemoteException;



import javax.xml.rpc.ServiceException;



import org.apache.axis.AxisFault;

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;





/**

* 访问SecurityService的客户端

*

*

*/

public class Client {



       /**

        * @param args

        * @throws ServiceException

        * @throws RemoteException

        */

       public static void main(String[] args) throws ServiceException, RemoteException {

              // wsdl中address 节点的location属性

              String endpoint = "http://localhost:8080/myservices/services/SecurityService";

              // 要调用的方法名

              String method = "foo";

            

              Service service = new Service();

              Call call = (Call) service.createCall();

              // 设置客户端访问的远程端点

              call.setTargetEndpointAddress(endpoint);

              // 设置用户名和口令

              call.setUsername("user1");

              call.setPassword("password1");

     

            

              // 调用远程方法

              try{

                     call.invoke(method,new Object[]{});

              }catch(AxisFault e) {

                     System.err.println(e.getFaultString());

              }

       }



}


        Call对象用setUserName()和setPassword()来设置用户名和口令。

        Axis自带的身份认证功能比较简单,如果其安全性不能满足应用系统的要求,可以自定义一个处理器替代SimpleAuthenticationHandler,在自定义处理器中采用其他的安全框架(如Acegi http://www.acegisecurity.org/)来保护你的WebService。
分享到:
评论

相关推荐

    WebService之axis的复杂对象传输方案

    ### WebService之Axis的复杂对象传输方案 #### 一、概述 在Web服务领域,Axis是一种广泛使用的开源工具包,它支持SOAP协议,并且能够帮助开发者轻松地创建和调用Web服务。对于复杂的业务场景,往往需要在客户端和...

    WebService axis2使用说明

    **WebService与Axis2详解** 1. **WebService** WebService是一种基于开放标准(如SOAP、WSDL和...理解并熟练掌握WebService和Axis2,对于开发和部署分布式服务至关重要,同时,控制权限是保证服务安全的重要一环。

    springboot使用axis1.4的demo

    Spring Boot以其简化配置和快速开发能力而受到广泛欢迎,而Axis1.4是Apache软件基金会的一个开源项目,主要用于生成和消费SOAP Web服务。当我们需要在Spring Boot应用程序中集成Web服务时,Axis1.4提供了一个强大的...

    OracleEBS-WebService开发笔记.pdf

    ### OracleEBS-WebService开发笔记知识点总结 #### 一、概述 **OracleEBS-WebService开发笔记** 是一份详尽的文档,旨在介绍如何利用 WebService 技术进行 Oracle E-Business Suite (EBS) 的集成开发。该文档由 ...

    axis2和spring结合发布WebService

    Axis2是Apache软件基金会开发的一个高效、灵活的Web服务引擎,它构建在AXIOM(抽象XML信息模型)之上,提供了丰富的功能来创建和消费SOAP(简单对象访问协议)服务。而Spring框架则是Java企业级应用开发的首选框架,...

    EAS bos webservice 开发指南

    【EAS BOS WebService ...EAS BOS WebService开发涉及服务的发布、部署、客户端调用以及安全性配置等多个环节。理解这些知识点有助于开发者有效地利用BOS平台构建可扩展、安全的集成解决方案,实现企业系统的高效协同。

    axis2 webservice实现文件上传删除功能

    Axis2是Apache软件基金会开发的一个高效且灵活的Web服务框架,它基于Java语言,并且是 Axis1 的下一代产品。本篇文章将深入探讨如何使用Axis2来实现文件的上传和删除功能,这对于构建分布式系统和跨平台应用至关重要...

    简单银行系统(webservice,springsecurity,ssh,ant,axis,ftl)

    在这个银行系统中,它可能负责处理用户的登录验证、权限控制以及防止常见的安全威胁,确保系统的安全性。 【ssh】:SSH通常指的是Struts + Spring + Hibernate的组合,是Java Web开发中常用的技术栈。Struts负责MVC...

    webservice开发相关教程实例

    Web服务(WebService)是一种基于互联网的、平台独立的软件接口技术,它允许不同的应用程序之间进行交互和数据交换。本教程实例将深入探讨Web服务的核心概念、开发工具和技术栈,旨在帮助开发者更好地理解和应用Web...

    webservice服务上传文件

    在这种场景下,Java Axis库是实现WebService的一个常用工具。 Axis是Apache组织开发的一个开源项目,专门用于创建和部署SOAP(简单对象访问协议)服务。SOAP是一种基于XML的协议,用于在Web上交换结构化和类型化的...

    webservice接口

    综上所述,"webservice接口"是一个基于Apache Axis实现的VIP电话查询服务,涉及到了WebService的基本原理、开发流程、安全性以及可扩展性等多个方面。这样的服务有助于企业内部或跨组织的信息共享,提升客户服务效率...

    Axis2集成SSH搭建WebService支持事务(图文详解含核心代码).zip

    Axis2是Apache软件基金会开发的一个开源Web服务框架,它提供了高性能、灵活且可扩展的环境来创建和部署Web服务。SSH(Secure Shell)则是一种网络协议,用于在不安全的网络上提供安全的远程登录和其他安全网络服务。...

    ssm+maven+webService

    【SSM + Maven + WebService】是现代Java Web开发中常用的一种技术栈组合。SSM是Spring、Spring MVC和MyBatis三个框架的缩写,它们分别负责IoC(Inversion of Control)/DI(Dependency Injection)、Web层的处理...

    Axis高级编程

    - Axis被广泛应用于开发工具中,如JBuilder和Eclipse J2EE插件Lomboz。 - Axis的核心引擎架构包括客户端、服务端、消息处理和数据绑定等关键组件。 3. **环境搭建** - JDK 1.6及以上版本。 - Apache Tomcat 6.0...

    webservice接口实现

    考虑到删除文件的同时也要删除相应的权限,因此首先调用权限管理类中的`removePermInfoForDeleteFileLogical(documentId)`方法删除权限,成功后调用`CEService`的`deleteDocument(documentId)`方法删除文件。...

    webService

    工具则可能指的是用来简化开发、部署和测试WebService过程的各种软件,如Apache Axis、SOAPUI等。 【内容详解】 1. **XML(可扩展标记语言)**:XML是一种自描述性语言,用于结构化数据的表示,它允许开发者定义...

    axis数据传输,上传下载

    Axis使得开发人员能够轻松地将Java类暴露为Web服务,同时也能够消费其他Web服务。本篇将深入探讨如何利用Axis框架实现文件的上传与下载功能。 文件传输在Web应用中是一个常见的需求,无论是用户上传个人文件,还是...

    webservice运行库

    【压缩包子文件的文件名称列表】"axis2",Axis2是Apache软件基金会开发的一个Web服务框架,主要用于Java平台,但也有Android版本。它支持SOAP 1.1和1.2,WSDL(Web服务描述语言),以及WS-Security等Web服务标准。在...

    axisService

    描述中提到的"Webservice入门"暗示了这是一个初学者教程或示例项目,旨在帮助用户理解如何在实际开发中创建和使用Web服务。Web服务是一种通过网络(尤其是互联网)进行通信的应用程序,它遵循特定的标准和协议,如...

Global site tag (gtag.js) - Google Analytics