基于shiro的权限管理系统设计和实现.docx
《基于shiro的权限管理系统设计和实现.docx》由会员分享,可在线阅读,更多相关《基于shiro的权限管理系统设计和实现.docx(28页珍藏版)》请在冰豆网上搜索。
基于shiro的权限管理系统设计和实现
摘要
随着经济社会的发展和信息科学技术的不断进步,信息的处理量越来越大,也越来越繁杂,于是计算机技术被广泛的应用到社会的各个领域之中。
但随着最近一些比较严重的信息系统泄密事件的发生,使用者意识到了信息系统安全的重要性,如何保护信息的安全成为使用者最关心的问题。
这里我们从系统设计实现的角度进行处理,在用户对系统数据进行访问前,先通过基于RBAC的权限管理系统的验证,确定用户拥有的角色,根据用户角色的权限再向用户展示数据信息,从而实现保护系统信息的目的。
该系统依托现在流行的JSP语言,通过MySQL数据库的数据处理,开发出通用权限管理系统来对用户身份权限信息进行验证。
这套系统具有权限分配简单、扩展性好的优点,并且支持岗位、权限多变的各种需求。
作为信息系统的附属系统,该系统很好的实现了用户与页面功能数据的整合和分离,还增添了信息管理等附带功能。
实践证明,基于RBAC的权限管理系统是最方便和快捷的安全管理控制方法。
关键词:
网络信息安全;RBAC;权限管理系统;角色
ABSTRACT
Asthedevelopmentofthesocialeconomyandthetechnologyandscience,theinformationneededtotreatisbiggerandbigger,andbecomeincreasinglycomplex,socomputertechnologyiswidelyappliedtoeveryfieldofsociety.Butalongwithsomeseriousinformationsystemleakseventshappenedoneafteranother,peoplehaverealizedtheimportanceofnetworksecurity,thushowtoprotectinformationsecuritydatafromviolationhasbecomethatuserscaremostabout.Here,adetailedanalysisofthedesignfromtheviewpointofthesystem'srealizationisgiven,usersfirstmustlogintoaccesstheprivilegemanagementsystem,foreachusergrouponeormoreusersareselectedandtheirrolesandauthoritysareidentified,andthentheycanviewtheclientlistanddetailsabouteachclient,soastoachievethegoalofprotectionsysteminformation.
TheauthoritymanagementsystemisbasedonfashionableJSPlanguageandMySQLdatabasetechnologytoauthenticateuseridentityauthorizationinformation.Authorityadministrativesystemthatadoptsthismethodhasstrongercommonnessandpracticability,whichcanmeetdemandofauthoritymanagementingeneralapplicationsystem.Asthesubsidiarysystemofinformationsystem,thesystemisgoodenoughtoachievetheintegrationandseparationbetweentheuserandthefunction.PracticesshowthatanauthoritymanagementsystembasedonRBACisthemostconvenientandefficientsafetymanagementcontrol.
Keywords:
Networkinformationsecurity;Role-BasedAccessControl;Authoritymanagementsystem;Role
1前言
随着计算机和网络信息技术的高速发展,网络信息的安全成为越来越大的问题,而访问控制技术是实现系统信息安全的重要手段。
随着现在系统普遍面向用户数大,处理数据量大,功能日益复杂的现状,如果还继续使用ABAC的访问控制模式将会使权限管理的实现变的相当繁琐和复杂。
于是人们设计了多种用来控制用户权限的系统模型,来确保敏感的数据信息只有拥有相应权限的人才可能看得到。
通过实践,基于角色的权限控制(Role—BasedAccessControl,RBAC)模型由于其简单方便易于维护的特点得到了越来越广泛的认同,被广泛应用在各种网络信息系统和大型MIS系统中。
1.1项目背景
在20世纪90年代发展并日臻完善的基于角色的访问控制(RBAC,Role-BasedAccessControl)是一种管理和增强系统安全性的技术。
这种访问控制通过引入“角色”这一中介量,从而实现了用户和访问许可的逻辑分离,极大地方便了权限管理。
JSP技术是现在流行的网络系统开发技术,因其具有跨平台的适应能力而被众多设计者所采用。
当Web服务器接收到访问JSP网页的请求时,首先执行网页的程序段,然后将执行结果返回给客户。
Java程序段可以对数据库数据进行操作,也可以返回或者前进到另外一个界面。
JSP与JavaServlet相似,所有数据处理均在服务器端进行,用户只需要用浏览器接收服务器反馈的信息即可。
JSP技术的基础是JavaServlet,应用程序的开发需要同时拥有JavaServlet和JSP。
JSP继承了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠的所有特点。
JSP可用等式表示为:
HTML+Java=JSP。
1.2目的及意义
随着信息网络技术的在社会各个领域的广泛应用,如何防止敏感数据信息的泄露成为系统使用者最关心的问题。
同时,为了保证系统的安全稳定的运行,使员工只能对自己拥有权限的数据进行操作和处理,其他的都不能查看以及操作,就需要在系统中根据每个人的职能为其分配相应的权限。
基于RABC的权限管理平台因其简单、方便快捷的权限处理机制,很好的解决了数据泄密以及功能权限的问题。
通过建立权限管理系统,可以保证每个员工只能根据自己的本职工作对系统数据进行限制性操作,防止信息泄露篡改问题的发生,为使系统更好的方便日常工作提供有效的安全保障。
同时因为有了授权机制,也可以防范无关人员对服务器进行非法操作,保证系统安全稳定的运行。
针对基于RABC的权限管理系统的设计理念,我从实际需求和能力出发,设计并实现了这个权限管理系统,它具有自适应性强、通用性好的特点,可以很好的减少权限管理系统的维护工作,提高权限管理系统的通用性,并且能够避免权限管理系统的重复开发问题。
系统着重关注了用户与访问许可实现逻辑分离的过程,可以作为大家认识了解和学习RBAC技术的一个范例。
1.3B/S开发模式的优点
B/S结构就是只安装维护服务器,将系统布置到服务器中,客户端采用浏览器来运行软件,即浏览器/服务器结构。
相对于C/S结构,B/S有很明显优点和长处。
(1)维护工作量大大减少。
如果系统需要进行维护,B/S结构只需要维护部署在服务器上的程序即可,而C/S结构系统维护时,除需要维护服务器上的程序外,还需要额外升级客户端程序。
(2)B/S结构开发的程序具有很强的适应性。
B/S结构实行的是3层数据处理,用户只是通过浏览器接受经过服务器计算完成之后的数据,及时用户电脑配置很低也能胜任。
但是C/S结构实行的是2层数据处理,数据还需要到用户客户端进行计算处理,这增加了客户端的软硬件负担。
(3)B/S结构开发的系统数据一致性好。
B/S结构系统数据实行集中存在,不同用户查看统一信息是完全一致的。
C/S结构系统由于数据存放与客户端中,数据会有一定的不一致现象出现。
(4)B/S结构系统数据具有很好的实时性。
C/S结构系统看到的数据都是客户端上传到服务器的数据,B/S系统因为其数据就在服务器中,所以B/S系统看到的都是系统的实时数据,能为决策者提供实时准确的参考。
(5)B/S结构系统具有很好的数据安全性。
C/S结构软件由于其数据分布的特性,因客户端本身或者外部环境而发生的数据损毁时常发生,使之保证数据安全的性能大大降低。
而B/S结构的系统由于其数据直接存放于服务器中,不存在与客户端进行数据交换的行为,从而会极大的提高数据的安全性。
2需求分析
2.1系统概述
随着计算机和网络信息技术不断发展,网络信息技术在各个领域的成功的应用结果让单位信息化的需求越来越强,使得单位越来越注重自己的信息化建设,网络办公及单位内部的信息处理已经成为众多单位尤其是网络公司的工作模式。
在单位进行信息化建设过程中,单位的敏感信息安全成为了其中的一个重要问题,因此,信息系统的安全成为单位信息化过程中所要处理解决的首要问题之一。
权限管理系统的设计目的在于利用计算机编程技术,构建一个依附于信息系统的安全可靠的权限管理平台,保证单位敏感信息的不被不适宜的人获取、篡改以及删除,保护数据的保密性、一致性、完整性。
该系统应有如下几大功能模块:
用户信息管理,角色信息管理,功能基本信息管理,角色分配管理和权限分配管理。
系统首先建立管理员用户和一般用户信息,通过对用户进行角色分配,再通过对角色进行权限的分配,来实现系统对用户的权限控制。
现在多数单位的信息管理系统的安全授权比较复杂,包含众多的业务实体和事物处理应用,每个部门中同一职位的员工因职能范围或地域的不同而具有的权限也不尽相同,有时甚至对同一个用户,或许由于在不同的业务中,也会有不同的权限,这种现象反映在信息系统中就是个体的权限和具体资源的对应关系,为了使得权限系统更加灵活、便捷,本设计采用RBAC授权模型,可以用来有效减轻系统权限的管理难度和操作的复杂度。
根据信息系统的需要,权限系统中设置了超级管理员,通过超级管理员来进入权限管理系统,对其余的普通的用户进行赋权。
2.2系统功能需求分析
基于一般信息系统对权限管理的要求,我们采用了基于角色的访问控制模型进行设计。
系统按照RBAC模型可为功能管理、角色管理、用户管理等三大模块。
2.2.1用户管理
用户信息是权限系统的基础信息,是系统控制的主体资源,用户直接关联角色信息,如果没有用户或者角色信息,系统就会拒绝用户的登录及其对系统信息的访问操作,用户的信息管理是权限系统首先要处理的问题。
用户管理的需满足如下需求:
(1)可以添加新的用户;
(2)能查看所有用户信息;
(3)删除已有用户信息;
(4)查看用户所具有的角色及权限;
(5)修改用户信息;
(6)对用户赋予相应角色。
2.2.2角色管理
角色管理是RBAC系统中的重要一部分,它是用户的和权限之间的纽带,一个角色会有多个用户,角色对应一定的功能权限菜单,即具体的权限。
当用户拥有正确的角色,并且角色设置了正确的权限,用户才能对系统进行访问和操作。
用户角色管理的需求描述如下:
(1)可以查看系统中拥有的所有角色信息;
(2)可查看具体某一角色的名称、描述以及角色权限;
(3)可修改、删除角色信息;
(4)可修改角色的权限分配。
2.2.3功能管理
该模块里是设置并定义权限管理系统所管理系统的菜单信息(即功能权限信息),将系统的功能菜单路径信息输入到权限系统中,通过对角色赋予功能菜单的权限实现用户权限管理的目的。
2.3UML建模
在权限管理系统中用户有两类:
一种是管理员用户,另一种就是一般用户。
由于本权限管理系统设计简单,这时里只给用户功能用例图。
2.3.1管理员用户的用例关系图
权限系统管理员用户是权限系统中拥有最高权限的用户,它的主要的操作就是对系统中的用户信息、角色信息及功能信息进行管理,管理员用户一般不会参与到信息系统的具体业务中,它是一个只对应权限系统的特殊用户。
权限系统管理员具体的操作权限有:
增加用户、查询用户、删除用户、为用户授予角色、删除用户角色、查看用户角色、查看用户权限、增加角色、删除角色、查看角色、给角色授予权限和查看角色权限等功能。
管理员对一般用户进行了相应的权限设置,一般用户才能登录到信息系统中进行数据的查看和处理。
图2.1管理员用户的用例关系图
2.3.2一般用户的用例关系图
一般用户的权限比较管理员要小的多,最主要的一般是角色的不同,管理员拥有系统管理角色,一般用户往往是其他的角色,具体权限需要管理对其进行设定。
在本系统中设定只有超级管理员用户可以登录权限系统,一般用户会提示没有权限。
假设一般用户能登录权限系统,那么其在权限管理系统中的权限一般只能查看其自己的一些用户信息,角色信息,已经权限信息等,不能操作更改信息。
图2.2一般用户的用例关系图
2.4系统性能分析
2.4.1安全性需求分析
构建一个成功的权限管理系统首先应该了解需要控制的系统的所有功能菜单信息,只有完整并且准确的获取到菜单功能信息,才能对角色赋予相应的权限,才能使权限系统与信息系统科学合理的进行匹配。
(1)权限系统控制要点
权限系统控制要点有:
信息资源、用户、单位的机构设置、具体岗位、业务角色、具体任务、业务流程以及业务规则等。
(2)访问控制的特点
在信息系统中,访问控制系统要具有很好的适应性以满足动态的或者特定用户的安全需求。
因此我们需要深入了解并分析系统访问控制的特点。
1)用户特点
信息系统的使用户数量繁杂,用户工作岗位变化也很频繁,如调进、调出、新进、辞职等。
同时若新业务的增加也会使得用户的工作内容频繁变化。
用户的不确定性是单位规模增大和业务增加的必然结果。
2)信息资源特点
现在系统普遍面临系统数据量大的特点,如何正确分类整理并确定其信息安全等级成为设计者必须要考虑的问题。
3)单位的机构设置特点
现在各个单位的机构设置都不尽相同,而且类型复杂,各个单位的机构设置都有其自己的特点、大型单位还存在地域上分布式的特点。
5)任务特点
单位环境中,具体任务的数量多并且种类复杂,因此,为了满足单位对访问控制的安全性需求,一般采用扩展性好、灵活性高的RBAC访问控制模型。
根据具体任务涉及到的系统菜单等信息,需要对用户角色进行及时的赋权更新操作。
2.4.2稳定性需求分析
软件系统的稳定性是决定软件系统好坏的一个重要因素。
一套系统在持续操作时间内出错的概率就是指软件的稳定性,例如统计一天之内系统出错的次数。
软件的稳定性需要从设计角度出发,依靠经验丰富的开发人员,通过合理划分系统模块,科学设计每个模块之间的关系,使用稳定的系统框架,来使系统即使更改部分代码,其对软件系统的影响也会将到最低。
如果一个系统报错的概率比较大(一天内出错两次或更多次),或者需要重启(一天内出错两次或更多次)才能正常运行,这就表明系统的稳定比较差。
不稳定的系统会给使用单位带来巨大的麻烦,如系统数据不及时、不准确、系统经常瘫痪、业务无法正常运作等问题。
导致系统稳定性差的原因主要是系统的并发数太多或者系统容错能力差。
本权限管理系统由于使用者大多只是管理员,并发数应该不会太多,主要精力还是放在提高系统的容错能力上。
3概要设计
3.1总体设计
通过超级管理员用户登录系统后,会进入系统主页面,页面上主要的功能有:
功能管理,角色管理,用户管理,系统属性,信息管理模块。
功能管理主要是对信息系统的功能菜单信息进行维护,包括“添加,删除,修改”操作。
角色管理主要对用户的角色信息进行维护,包括“添加,查看,删除,修改,权限分配”操作。
用户管理主要用管理信息系统用户的信息,包括“添加,查看,修改,删除”操作。
系统属性主要用于显示当前系统的一些信息。
用户管理是本论文重点,这里所说的用户管理就是权限管理。
在权限管理中,包括信息管理设置了一些额外的信息显示功能。
在这系统功能中,用户管理师最主要的功能。
用户信息的增加,删除,修改,以及具体用户角色的分配,具体权限的查看都可以在此进行操作和查看。
此时,管理员可以对其进行权限的修改。
3.2.1模块划分
进入系统主页面,系统主要的功能有:
功能管理,角色管理,用户管理,以及权限分配管理。
如图所示:
图0.1模块划分
3.2.2模块设计
1)用户管理
在系统首页,用户输入用户名密码后,由JSP控制器接收,然后和后台数据库中的用户数据进行比较,验证成功则进入操作主页面。
在权限管理主界面如果管理员用户需要对某个用户进行操作,需要首先对数据库中的用户信息进行搜索,然后再对检索出的用户数据进行修改或者删除。
在用户管理界面上管理员用户可以直接进行添加用户账户操作。
图0.2账户管理时序图
2)权限管理
权限管理存在于角色管理模块下,根据用户关联角色,角色关联具体权限的设计思路,因此用户点击角色管理进入角色管理模块进行操作。
权限管理过程简述为:
根据获取的用户信息,首先检索用户的角色信息,在根据检索出的角色信息,控制器通过查询数据库后返回所选用户的所有权限信息。
这时管理员就可以查看的用户权限信息,同时也可以对该用户的权限信息进行重新设置。
拓展:
权限组管理。
现在权限管理系统很多设计到了权限组的概念,主要是对用户、角色的进一步整合。
可设计为用户点击权限组管理进入权限组管理模块,系统会显示所有权限组,用户可以对所选权限组进行修改和删除操作,也可以增加权限组。
本系统中没有涉及到权限组的设计。
图0.3权限管理时序图
3)重置及修改密码
重置密码,用户进入重置密码页面,输入要重置密码的用户账号后,点击确认,控制器就会用初始密码替换掉数据库中的当前密码,最后会在页面中显示初始密码。
修改密码,用户进入用户信息修改页面,输入新密码后,点击提交,控制器就会对数据库进行操作,将当前密码替换成新密码。
图0.4密码管理时序图
3.3模块设计
3.3.1权限管理模块
1)权限管理业务逻辑类设计
RightModifyBusiness类是权限修改业务逻辑类,主要是针对权限修改控制器发出修改权限消息,然后权限修改逻辑类相应,并通过JDBC修改数据库信息。
他们之间通过Session传递消息,消息的内容存放在Form里,通过UserForm类接收和存储消息。
UserForm是ActionForm子类,同时把String类作为自己的私有属性,主要是用于存储各种信息。
JvDBO是JDBC连接的主要类,主要用于数据库的连接操作,同时将连接的Connection返回,供RightModifyBusiness使用。
图0.5权限修改类图
2)权限管理控制器类设计
图0.6权限显示类图
权限管理控制器类,用于接收网页(JSP)传来的消息,然后通过调用业务逻辑类进行数据处理,然后根据处理后的情况跳转的不同的页面。
这样可以实现复杂的业务逻辑。
控制器类是Action的子类,其可以接收网页(JSP)传来的Form表单的数据,同时利用Session进行保存和消息的传递。
其依赖的类包括UserForm(进行数据的存储和传递),JvUser(权限操作对象),ActionMapping(主要用于页面的跳转)。
在JvDBO类中还把Logger日志类作为自己的私有属性,所以在进行数据操作时,系统会记录相关的操作信息,方便管理员进行维护。
3.3.2用户密码修改模块
1)用户密码修改业务逻辑类设计
密码操作管理模块涉及密码的修改,重置。
这里只针对密码修改模块进行介绍。
密码重置的原理和密码修改的原理大同小异,都是对数据库进行相关的操作。
PasswordModifyBusiness密码修改业务逻辑主要是为密码修改控制器模块服务的。
当密码修改业务逻辑收到控制器类的消息时,当然传递消息的渠道还是Session,载体依然是ActionForm。
此时,业务逻辑类会提取Session中的数据跟据控制器的指令进行相关的数据库操作。
在数据库操作之前,业务逻辑会进行数据库的连接和认证。
图0.7密码修改业务逻辑图
2)用户密码修改控制器类设计
密码修改控制器类,是JSP网页编程中MVC模块中的control,模块,即控制器模块,主要功能是通过页面传送的消息和指令,通过复杂的后台业务逻辑处理,然后根据处理后的结果,进行相关的页面跳转。
所以不同的结果会跳转的同一个页面或者不同的页面,这个完全取决于系统的设定。
密码修改控制器收到网页表单里德数据后,会把数据存储在PasswordForm类中,然后通过Session类把数据传送给业务逻辑类进行相关的业务处理,并接收业务逻辑类处理后的结果,根据结果进行页面跳转操作。
图0.8密码修改控制器类图
3.3.3用户账户管理模块
1)用户账户管理Bean类设计
用户bean把用户的数据变量声明为私有属性,通过界面的set和get函数获取,然后提交到actionform表单中,再通过后台数据库进行匹配或者处理操作。
图0.9用户Bean类图
2)用户账户管理Form类设计
ActionForm用于封装用户的请求参数,而请求参数是通过JSP页面的表单域传递过来的。
可以把Form理解为JavaBean的一种形式,Form主要是当用户把网页里德表单填好后,点击提交按钮,然后网页会把表单里的数据通过Session或Url传送给后台,此时后台会利用ActionForm类进行数据的接收操作。
此时ActionForm类的任务就完成了。
图0.10用户账户管理Form类图
3)用户账户管理业务逻辑类设计
用户账户管理模块,包括用户账户的增加,修改,删除,和现实模块,这里仅以用户账户删除模块进行介绍。
其他的模块类结构和本模块结构相同,只是操作上存在差异。
用户删除业务逻辑类把日志类Logger加入到了自己的私有属性之中,主要是用于记录管理员在对用户账户进行的一系列操作。
方便日后的维护和系统的安全。
用户账户操作,依赖于用户类JvUser和用户表单类UserForm。
其在接收到用户账户控制器类传来的消息后,会调用JvDBO类进行JDBC连接和数据库操作。
实现JSP后台的复杂业务逻辑。
图0.11用户账户删除业务逻辑类图
3.4数据结构设计
权限系统所涉及的数据库表有如下几张:
表3.1数据库表名清单
中文表名英文表名表功能说明
用户信息表s_userinfo记录用户相关信息
系统功能表s_menu记录系统功能信息
角色信息表s_role记录角色信息
权限信息表s_rolemenu记录角色权限信息
3.4.1用户信息表
表3.2用户信息表
序号字段名字段中文名数据类型备注
1uid用户idint
2username用户姓名varchar(15)
3userpwd用户密码varchar(50)
4unickname用户昵称varchar(20)
5uage用户年龄int
6usex