基于Shiro的移动应用权限控制系统的设计与实现

2016-09-20 02:47:30许滔同济大学上海201800
现代计算机 2016年6期
关键词:过滤器特性模块

许滔(同济大学,上海 201800)

XU Tao(School of Electronic and Information Engineering,Tongji University,Shanghai 201800)

基于Shiro的移动应用权限控制系统的设计与实现

许滔
(同济大学,上海201800)

0 引言

随着移动互联网高速发展,越来越多的传统企业和软件被影响甚至被颠覆。移动互联网很多特有的性质不同于传统Web服务。首先是移动性,每个终端都摆脱了网线和电源线的依赖,能够做到随时随地上网,这也就导致了碎片化上网这个特点。其次就是本地化,移动端能够通过多种定位方式来获取丰富的LBS服务,这也带来了位置信息隐私安全的问题。权限控制系统作为后台系统中重要的组成部分,有很多成熟的框架,例如Spring Security、Apache Shiro等,但是这些框架都是针对Web应用的,虽然具有身份认证、授权、会话管理、加密等安全模块,都是基于角色访问控制(RBAC)来实现的,但是对于移动互联网的特性支持的并不多,需要在这些框架的基础上做出扩展。本文是基于常用的权限控制框架Apache Shiro,结合移动互联网的特性,扩展了该框架对动态URL的支持、位置支持和其他相关移动特性支持。

1 系统总体设计

基于Shrio的移动应用权限控制系统继承了Shrio的权限控制模型,利用Shrio提供的安全管理器实现用户访问的身份认证和授权管理,系统必须集成Shrio并提供所需要的用户、角色、权限域。系统管理员能够根据规则输入不同过滤器动态地控制移动端对接口的访问控制。

1.1系统的功能需求分析

为了实现对RESTful API的动态权限控制,后端提供的接口必须完全遵守Restful标准,每个URI对应一种资源,客户端通过不同的HTTP动词来操作服务器,使得服务器端发生状态转移。每个定义的URI必须结构清晰易于了解,能够方便扩展。HTTP的4个动词:GET、POST、PUT、DELETE依次对应4重基本操作获取资源、新建资源、更新资源、删除资源,也依次对应于Shiro中资源的权限view、create、update、delete。POST和PUT操作都可以用于更新资源,但是由于PUT操作具有幂等性,更符合更新操作的影响。基于以上约定,系统需要支持对URI的模式匹配,每个URI模式对应的动词也能设置多个。设置过滤器定义后,系统能够动态更新原有的过滤器链,能及时更新权限控制模块。

移动端位置信息的权限控制需要移动端的请求中带上经纬度的参数,能够根据位置信息进行多种方式的权限控制,包括基于距离的和区域的控制。因此,每个需要进行位置权限控制的资源都需要配置位置控制信息。调用失败时,返回无权限的原因。

1.2系统总体设计结构

基于Shiro的移动应用权限控制系统的总体架构如图1所示:

图1 

整个系统分成了数据访问、业务逻辑、资源服务、表现层4个层次。

(1)数据访问层,提供对数据库操作定义,封装数据库细节,为业务逻辑层提供数据。

(2)业务逻辑层,按照高内聚低耦合的原则设计的,包含了过滤器动态管理、权限控制管理、地理位置信息管理等主要逻辑模块。

(3)资源服务模块,提供Restful API给Web端或者移动App终端调用。

(4)表现层,管理员后台管理系统或者移动端应用界面。

2 系统的关键技术及实现方法

Shiro对Servlet容器的拦过滤器链进行了代理,ShiroFilter在Servlet容器的过滤器链执行之前,通过代理,先执行Shiro自己的过滤器体系,然后进行容器级别的过滤器。本系统通过过滤器管理模块自定义并动态更新Shiro过滤器,通过移动权限管理模块来实现对API权限控制,以及基于LBS的权限控制。

2.4过滤器管理

定义过滤器的数据结构为:

这是定义过滤器的数据结构,根据管理员在Web端配置并持久化到数据库。type和lbsType字段用于区分过滤器的不同模式,对URI的权限控制有只针对URI和URI+方法两种模式,对位置的权限控制有距离和区域两种模式;name字段是名称;url字段是基于Ant path匹配原则的URI模式,一个模式可以匹配多个URI;method是HTTP方法字段,可以有多个用逗号连接;roles和permissions是Shiro的角色和权限;loca鄄tion和distance是资源的权限控制位置和有效距离,用户位置到资源位置不超过有效距离则才有权限访问该资源;area是资源区域,用户位置处于资源区域时才有权限访问该资源。

通过以上规则定义,对于每条记录,过滤器管理系统能够向Shiro的过滤器链中加入不同的过滤器,当有请求到达时,Shrio调用自定义的PathMatchingFilter鄄ChainResolver类的getChain()方法得到所有与当前请求路径匹配的过滤器,并调用过滤器管理系统的代理方法得到所有的过滤器进行处理。

2.2权限管理

RESTful API和位置信息的权限控制主要是通过实现FilterService接口实现的:据Request请求构建后面权限验证所需的RESTful API 和 Location信息;getMachedUrlFilter方法用于根据HTTP方法和获取所有自定义的UrlFilter对象,再根据Ant path匹配当前请求的路径,返回列表集合;check鄄Params方法校验请求的参数,当请求参数不合法时,过滤器会拦截请求,并返回参数异常原因;checkRequest方法进行权限控制,两种不同的权限控制有不同的实现子类。抽象类AbstractFilterService实现了前面几个公用方法,RestFilterService和LbsFilterService两个子类实现各种的权限控制方法。

RestFilterService的权限控制策略是,获取所有过滤器中的角色集合和权限集合,当前用户只要有任意角色或有任意权限就能通过,否则没有权限。

LbsFilterService的权限控制策略是,当前用户的位置由每个过滤器进行权限控制,得到的结果集中只要有一个通过就可以通过,否则没有权限。位置权限控制器实现接口:

基于距离控制的类为LocationChecker,控制策略为用户当前位置与资源权限控制位置之间的实际距离不大于权限控制距离就通过;基于区域控制的类为AreaChecker,控制策略为用户当前位置在权限控制区域里就通过。基于位置的权限控制中对位置信息的处理主要用到了百度地图API的地址解析和逆地址解析等相关接口。

3 结语

本文分析了移动互联网的新特性与Apache Shiro安全框架的优良特性,通过结合移动应用RESTful API 和LBS这两个特性与Shiro的扩展性,合理设计了一个符合RESTful风格的权限控制系统。具有结构清晰、可扩展性强、移动性强等特性。实际应用表明,该控制系统可以对控制粒度灵活配置,方便移植到其他移动应用系统中去。在未来的发展中,可继续深入扩展,整合其他移动特性进来。例如手机联系人、网络状态等,实现更加丰富的权限控制功能。

[1]罗军舟,吴文甲,杨明.移动互联网:终端、网络与服务.计算机学报,2011(11):11-34.

[2]Fielding R T.Architectural Styles and the Design of Network-Based Software Architectures[J].University of California Irvine,2000,64 (3):303.

[3]周傲英,杨彬,金澈清,马强.基于位置的服务:架构与进展.计算机学报,2011(7):1155-1171.

[4]李春雨.基于位置的权限管理系统研究与实现.上海交通大学,2007.

[5]孟志飞.基于URL访问权限控制的网络安全技术.华东师范大学,2007

[6]徐孝成.基于Shiro的Web应用安全框架的设计与实现.电脑知识与技术,2015(16):93-95.

Permission Control;Apache Shiro;RESTful;LBS

Design and Implementation of Mobile Permission Control System Based on Shiro

1007-1423(2016)06-0097-04

10.3969/j.issn.1007-1423.2016.06.023

2015-12-17

2016-01-15

XU Tao
(School of Electronic and Information Engineering,Tongji University,Shanghai 201800)

权限控制系统是软件系统中非常关键的一个系统,已经有很多成熟的软件系统,但是在移动互联网的新环境下有很多新的因素影响着权限系统。经过对Apache Shiro、RESTful、移动互联网等进行研究,给出基于Shiro并结合移动互联网与RESTful特性的移动应用权限控制系统,并利用Java语言编程对该系统进行设计与实现。

权限控制;Apache Shrio;RESTful;LBS

许滔(1989~),男,湖南汨罗人,在读研究生,研究方向为移动互联网安全

Permission control system is a key part of software system,there are a lot of sophisticated software systems.But under the new environ鄄ment of mobile Internet,many new factors affect the permission system.By researching on the Apache Shiro,RESTful API and Mobile Internet,puts forward a permission system on the basis of Apache Shrio with the features of mobile Internet and RESTful.Gives a design and realization of this system by applying the Java language programming.

猜你喜欢
过滤器特性模块
28通道收发处理模块设计
“选修3—3”模块的复习备考
谷稗的生物学特性和栽培技术
色彩特性
流行色(2020年9期)2020-07-16 08:08:54
进一步凸显定制安装特性的优势 Integra DRX-5.2
支持过滤器的REST模型研究与实现
电子测试(2018年9期)2018-06-26 06:45:56
声音过滤器
趣味(语文)(2018年2期)2018-05-26 09:17:55
Quick Charge 4:什么是新的?
CHIP新电脑(2017年6期)2017-06-19 09:41:44
选修6 第三模块 International Relationships
基于LOGO!的空气过滤器自洁控制系统
自动化博览(2014年6期)2014-02-28 22:32:20