Axis2学习笔记:用户身份认证

说明:此处的用户身份认证不是基于证书系统的身份认证,如果需要通过证书系统进行身份认证,请使用rampart。

用户身份认证是很多业务系统必须具备的功能,webService也一样,经过本人这几天的学习研究,发现axis2的安全模块rampart不支持基于业务的用户身份认证,只能是基于证书的身份认证,而很多情况下,我们是需要基于业务用户的身份认证的,甚至需要与CAS、SHIRO等安全框架进行整合,这时rampart模块就派不上用场了。而单独的handler,经本人实际测试,在加上后,客户端直接就不能调用服务,还好axis2提供了模块(module)扩展,我们可以自己编写扩展模块来实现这一功能。

废话不多说,现在就让我们开始自己的基于业务用户的身份认证吧。要实现这个功能,我们需要做三件事:1、实现基于业务用户的身份认证的扩展模块,2、在服务端加载扩展模块,3、在客户端调用时,往soap头中添加身份信息。

一、实现基于业务用户的身份认证的扩展模块

这个很好实现,首先,我们需要新建一个普通的JAVA工程,新建两个类,一个是module另一个是handler。module类必须实现org.apache.axis2.modules.Module接口,可以不用具体实现任何接口方法,除非您的扩展模块有初始化及销毁的操作。这个是AXIS2架构要求的。

handler类必须继承org.apache.axis2.handlers.AbstractHandler基类。实现invoke方法,具体的用户身份认证逻辑在此方法中实现。

public InvocationResponse invoke(MessageContext arg0) throws AxisFault {

checkUserPwd(arg0);

return InvocationResponse.CONTINUE;

}

接下来,我们需要编写module.xml,向axis2表明我们扩展的模块的实现是什么。这个文件需要我们在src目录下新建META-INF文件夹,并将这个文件放到META-INF文件夹下。

<module name="logging" class="com.dbw.checker.UserCheckModule">

<InFlow>

<handler name="InFlowLogHandler" class="com.dbw.checker.UserCheckHandler">

<order phase="loggingPhase"/>

</handler>

</InFlow>

</module>

在module.xml中,除了<InFlow>外,还有<OutFlow>,<InFaultFlow>和<OutFaultFlow>,分别对应入、出、入错误、出错误四个流程,我们可以根据需要进行配置,像本人现在这个需求,只要在请求进入时进行验证,因此只要配置<InFlow>即可。

最后,我们可以使用jar命令或eclipse的导出jar功能,导出模块,注意:axis2模块文件的扩展名必须是.mar。

二、使用身份认证模块

在创建了身份认证扩展模块后,下一步就是要使用它。

1、将身份认证模块的mar文件复制到modules目录,如果此目录下有models.list文件,在此文件中增加身份认证模块的文件名。

2、在axis2.xml的<InFlow>的最后添加phase,像我的这个为<phase name="UserCheckPhase"/>。

3、修改services.xml文件,在需要身份认证的服务中引用身份认证模块,<module ref="logging"/>。

三、在客户端调用服务

通过以上两个大的步骤,我们就完成了服务端的开发工作,这时我们可以通过axis2的code generator功能,生成供客户端调用的stub。当我们什么都不修改的情况下,会发现调用失败,这是因为我们的客户端的SOAP头中没有包含用户身份信息。

1、改造stub

/**

* 客户端增加soap头信息

*

* @param sfunc            方法名,注意大小写

* @param suser            用户名

* @param spass            密码

*/

public void addClientSoapHeader(String sfunc, String suser, String spass) {

OMElement header = HeaderOMElement.createHeaderOMElement(

"http://test.com", sfunc, suser, spass);

_serviceClient.addHeader(header);

}

2、在调用具体方法前在SOAP头中添加用户身份信息

CalculateServiceStub client = new CalculateServiceStub();

client.addClientSoapHeader("sum", "toone", "111111");

本博文中的例子的下载地址:

axis2用户身份认证扩展模块

axis2服务端源码,带用户身份认证

axis2客户端调用服务端,带用户身份认证

时间: 2024-10-06 11:36:28

Axis2学习笔记:用户身份认证的相关文章

Axis2学习笔记

Axis2学习笔记 目录: 1.准备 2.发布service 3.生成客户端代码 1.     准备 下载axis2 的bin和war两种发行版本. Bin版本用于使用自带的命令生成客户端代码. War包中的WEB-INF目录下的文件用于服务提供方使用. 2.     发布service 新建一个Maven项目,在pom.xml中新增以下依赖:         <dependency>             <groupId>org.apache.axis2</groupI

思科路由器配合域内Radius服务器完成VPN用户身份认证

背景介绍: 公司有一个域环境,路由器Wan地址为:a.b.c.d,Lan地址为:192.168.30.1,其余服务器地址如图所示,其中VPN服务器需要2块网卡,第2块网卡的地址为172.16.0.1使用NAT转换通过192.168.30.5访问外网,给使用VPN登陆的客户端指定IP地址为10.0.0.1-10.0.0.100,为了方便管理,实现账号的单一登陆,搭建了Radius服务器,下面就来介绍如何使用思科路由器配合域内Radius服务器完成VPN用户身份认证. 路由器设置: 登陆路由器,首先

安装vsftpd+pam+mysql实现对虚拟用户身份认证功能

安装vsftpd+pam+mysql来实现对虚拟用户身份认证功能 事项说明:在这里vsftpd直接使用yum  -y  install   vsftpd来直接安装的:mysql是使用通用二进制格式安装的,使用的版本为mysql-5.5.28.这里不再介绍安装步骤,前面已经详细介绍过.由于vsftpd需要借助pam模块到mysql数据库中检索用户名和密码,在这里还需要安装pam-mysql模块,才能实现pam到mysql中完成用户名和密码的认证功能. 一.安装所需要程序 1.事先安装好开发环境和m

Shiro:学习笔记(1)——身份验证

Shiro--学习笔记(1) 1.核心概念 1.Shiro不会自己去维护用户.维护权限:这些需要我们自己去设计/提供:然后通过相应的接口注入给Shiro.2.应用代码直接交互的对象是Subject,也就是说Shiro的对外核心是Subject: Subject:主体,代表了当前用户,不一定是一个具体的人,与当前交互的任何东西都是Subject,如网络爬虫.机器人等,是一个抽象概念.所有的Subject都会绑定到SecurityManager.可以把Subject认为是一个门面:SecurityM

PHP中对用户身份认证实现两种方法

用户在设计和维护站点的时候,经常需要限制对某些重要文件或信息的访问.通常,我们可以采用内置于WEB服务器的基于HTTP协议的用户身份验证机制. 当访问者浏览受保护页面时,客户端浏览器会弹出对话窗口要求用户输入用户名和密码,对用户的身份进行验证,以决定用户是否有权访问页面.下面用两种方法来说明其实现原理.  一.用HTTP标头来实现  标头是服务器以HTTP协议传送HTML信息到浏览器前所送出的字串.HTTP采用一种挑战/响应模式对试图进入受密码保护区域的用户进行身份验证.具体来说,当用户首次向W

Linux课程笔记 用户身份切换命令

超级用户root具有超级管理权限,由于权限太大,如果管理不好,就会对系统安全带来安全隐患.在工作场景中,一般临时性处理工作,都是以普通用户的身份完成,只在必要时才使用超级用户root. 1  su命令 1.1  su介绍 通过su命令可以在用户之间切换,超级用户root向普通用户或虚拟用户切换不需要密码(这就是超极权限所在).其他普通用户之间或者普通用户切换到root,都需要切换用户的秘密验证. su参数选项 注释说明 -,-l,--login 使一个shell成为登陆的shell,如执行su

Linux学习笔记——用户、组管理命令及常用选项

用户管理命令: useradd  userdel usermod passwd  id finger chsh  chfn chmod chown  su 组管理命令: groupadd groupdel groupmod gpasswd   chgrp 用户类型分为:用户u:owner.组g:group.其他o:other   三种类型 文件权限包含:r  w  x  执行权限 文件与目录之间关于rwx 权限的区别 : 文件: r :可读  ,可以使用cat 等命令查看 w : 可写  ,可以

思科路由器配合域内Radius服务器完成VPN用户身份认证(二)

背景介绍: 创建好VPN服务器后(创建步骤详见http://arkling.blog.51cto.com/2844506/1669855),需要用户在本地创建新的网络连接,并指定连接所采取的协议,此时的VPN用户虽然可以访问内网的服务器,但是却无法访问外网,是因为本地的默认路由会被VPN的连接路由所取代.为了让VPN用户能同时使用内外网,需要将VPN的连接设置上将"在远程网络上使用默认网关"去掉,并且在拨入VPN的本地计算机上新增一行路由条目,此时需要注意的是默认网关是VPN指定地址的

Linux学习笔记——用户及权限详解

用户及权限详解    用户.组.权限 安全上下文(secure context): 权限: r   w   x  文件: r:可读,可以使用类似cat等命令查看文件内容: w:可写,可以编辑或删除此文件: X:可执行,exacutable,可以命令提示符下当作命令提交给内核运行:  目录: r:可以对此目录执行ls以列出内部的所有文件: w:可以在此目录创建文件: x:可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息: rwx: r--:只读 r-x:读和执行 ---:无权限