基于MVC架构的网站RBAC访问控制框架设计与实现_第1页
基于MVC架构的网站RBAC访问控制框架设计与实现_第2页
基于MVC架构的网站RBAC访问控制框架设计与实现_第3页
基于MVC架构的网站RBAC访问控制框架设计与实现_第4页
基于MVC架构的网站RBAC访问控制框架设计与实现_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1基于基于 MVCMVC 架构的网站架构的网站 RBACRBAC 访问访问控制框架设计与控制框架设计与实现实现苏州科技学院苏州科技学院毕业设计论文毕业设计论文姓名:周霖钦姓名:周霖钦专业:计算机科学与技术专业:计算机科学与技术指导老师:陆指导老师:陆 悠悠2摘摘要要一个实际的商务网站系统除了需要关注于功能需求之外,还需要考虑很多非功能性需求,安全性就是其中一个非常重要的方面。访问控制是几乎所有的应用系统都不可缺少的一部分。本文从 MVC 架构商务管理系统的需求出发,首先分析了几种访问控制的优缺点,在此基础上提出了利用 RBAC 模型来进行系统的访问控制。并将其用于某一具体的商务系统中,给出了实

2、现过程。关键词关键词:MVC、RBAC、访问控制、角色、权限。3AbstractWhen functional requirements are chiefly paid attention to by people in a commercial application system, many nonfunctional requirements are also taken into account. Security is one of the most important aspects of the nonfunctional requirements. Access contro

3、l almost is a necessary part in all application systems. This paper analyses the requirements of comprehensive commercial information management system based on MVC. It analyses the merits and demerits among the common access controls, and proposes process access control based on RBAC model. Finally

4、, it describes how to realize the model in a material commercial system.Key words: MVC,RBAC,Access Control, Role,Permission. 4目录引引言言 .1第一章第一章 课题背景课题背景 .21.1 MVC 概述.21.2 RBAC 模型概述.31.2.1 RBAC 原理简介.31.2.2 RBAC 适用性分析.51.3 RBAC 在 MVC 中的应用现状.6第二章第二章 系统框架分析与设计系统框架分析与设计 .92.1 基于 MVC 架构的 WEB系统.92.2 RBAC 模型的

5、建立.112.3 RBAC 模型在 MVC 网站中的应用.12第三章第三章 设计实现设计实现 .143.1 RBAC 框架实现.143.2 RBAC 模型在系统中的实现.173.2.1 系统功能模块的实现.173.2.2 系统权限模块的实现.213.2.3 系统角色模块的实现.233.2.4 为用户设置角色.253.2.5 用户权限功能树的生成.26第四章第四章 系统测试系统测试 .294.1 系统测试.294.1.1 测试环境.294.1.2 测试方案.294.2 总结与展望.324.3 致谢.33参考文献参考文献 .34附录附录 A A:英文原文:英文原文 .35附录附录 B B:中文翻译

6、:中文翻译 .411引引言言本此毕业设计将基于角色访问控制(Role-Based Access Control,RBAC)作为研究课题,来实现一个企业内部管理系统中的权限管理部分。本文在RBAC2001 建议标准的参考模型(下称 NIST RBAC 模型)的基础上,结合综合信息管理系统以及软件系统集成的要求和特点,将 RBAC 访问控制框架应用到一个已有的以 MVC 为架构建立而成的商务网站中去。2第一章第一章 课题背景课题背景1.11.1 MVCMVC 概述概述由于 Internet 的普及和网络技术的发展,大部分的企业或单位都拥有了自己的 Web 站点。通过 Internet 或 Intr

7、anet,企业的管理变得更加方便;企业的信息发布变得更加便捷;企业的市场开拓变得更加简便。企业网站大部分属于商务网站,企业通过利用 Web 系统,可以方便的发布产品信息,管理订单信息,管理内部的诸如人事、员工薪酬信息等。从而在一定程度上提高工作和管理效率,降低生产和管理成本。现在用来建立 Web 站点的工具和编程语言主要有 ASP、PHP 和 JSP,使用的设计模式是 MVC。MVC 作为构建网站系统的主流设计模式,有其自身的特点和优势,具体表现在:(1)可以为一个模型在运行时同时建立和使用多个视图。变化-传播机制可以确保所有相关的视图及时得到模型数据变化,从而使所有关联的视图和控制器做到行为

8、同步。 (2) 视图与控制器的可接插性,允许更换视图和控制器对象,而且可以根据需求动态的打开或关闭、甚至在运行期间进行对象替换。 (3) 模型的可移植性。因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。需要做的只是在新平台上对视图和控制器进行新的修改。 (4) 潜在的框架结构。可以基于此模型建立应用程序框架,不仅仅是用在设计界面的设计中。基于 MVC 模式建设 Web 站点系统,可以提高代码的重用性;可以提高代码的可维护性;可以提高编写程序的效率。所以目前,越来越多的网站开始采用MVC 模式来进行架构,但是在这其中,对于系统安全性问题的研究还进行的不多。在构建 Web 系统

9、之初,就要考虑系统的安全性,考虑用户对系统的访问控制。通过访问控制,一方面只有合法的用户才可以安全、正确的使用系统,非法的用户是无法登陆系统进行操作;的;另一方面合法的用户登录系统之后,由于用户的类型不同,就会存在不用的用户在访问系统时具有不同的权限,比如一个企业或公司的经理往往会比企业或公司的员工具有更多的权限和功能,相应的用户登录系统之后,他们只能行使系统准许他们的权限。3纵观现在的 Web 系统,大都存在这样的问题:功能虽强大,但是却存在很多的安全隐患。系统中的不同类型的用户对信息都具有相同的权限,可以任意的修改和删除,这对于一些重要的信息是非常危险的。对信息的科学管理,应该是最高层的用

10、户拥有对信息最高的权限,而处于底层或次底层的用户仅拥有对信息最少的权限。此外,现在大部分 Web 系统中都缺少一个良好的访问控制模块。在该模块中,可以为系统设定不同的用户,分配不同的权限。将系统中的用户和系统中的权限关联起来,形成一种有效的系统安全管理。综上所述,企业在构建自身的商务 Web 系统时,在考虑功能完整性和操作简便性的同时,还应重点考虑构建的 Web 系统的安全性。只有在保证了安全性的前提下,功能的完整性和操作的简便性才变得有意义。1.21.2 RBACRBAC 模型概述模型概述.1 RBACRBAC 原理简介原理简介1992 年,美国国家标准与技术研究所(NIST

11、)的 David Ferraiolo 和Rick Kuhn 在综合了大量的实际研究之后,率先提出基于角色的访问控制模型框架,并给出了 RBAC 模型的一种形式化定义。该模型第一次引入了角色的概念并给出其基本语义,指出 RBAC 模型实现了最小权限原则(the least privilege)和职责分离原则(separation of duty) 。该模型中给出了一种集中式管理的 RBAC 管理方案。1995 年他们以一种更直观的方式对该模型进行了描述。Ravi Sandhu 和他领导的位于 George Mason 大学的信息安全技术实验室(LIST)于 1996 年提出了著名的 RBAC96

12、 模型,将传统的 RBAC 模型根据不同需要拆分成四种嵌套的模型并给出形式化定义,极大的提高了系统灵活性和可用性。1997 年他们更进一步,提出了一种分布式 RBAC 管理模型 DRBAC97,实现了在 RBAC 模型基础上的分布式管理。这两个模型清晰的表征了 RBAC 概念并且蕴涵了他人的工作,成为 RBAC 的经典模型。绝大多数基于角色的访问控制研究都以这两个模型作为出发点。在 RBAC 中,涉及到的基本概念如下:用户(User):系统的使用者。可以是人、计算机、机器人等,一般指人。角色(Role):一定数量的权限的集合。权限分配的单位与载体,目的是隔离用户与权限的逻辑关系。对应于组织中某

13、一特定的职能岗位,代表特定的4任务范畴。角色的例子有:经理、采购员、推销员等。权限(Permission):表示对系统中的客体进行特定模式访问的操作许可,例如对数据库系统中关系表的选择、插入、删除。在应用中,许可受到特定应用逻辑的限制。用户指派(User Assignment):用户与角色之间的关系是多对多的关系。用户指派指根据用户在组织中的职责和能力被赋为对应角色的成员。用户通过被指派到角色间接获得访问资源的权限。权限指派(Permission Assignment):角色与权限之间的关系也是多对多的关系。权限指派指角色按其职责范围与一组操作权限相关联。进行权限分配时,应遵循最小特权原则(t

14、he Least Privilege Rule) ,即分配的权限集既能保证角色充分行使其职权,又不能超越职权范围。角色激活(Role Activation):是指用户从被授权的角色中选择一组角色的过程。用户访问的时候实际具有的角色只包含激活后的角色,未激活的角色在访问中不起作用。相对于静态的角色授权来说,角色激活是一种动态的过程,提供了相当的灵活性。会话(Session):用户是一个静态的概念,会话则是一个动态的概念。一次会话是用户的一个活跃进程,它代表用户与系统进行交互,也叫主体(Subject) 。用户与会话是一对多关系,一个用户可同时打开多个会话。活跃角色集(ARS):一个对话构成一个用

15、户到多个角色的映射,即会话激活了用户授权角色集的某个子集,这个子集被称为活动角色集,ARS 决定了本次会话的许可集。在 RBAC 中,它遵循如下的基本原则:角色继承(Role Inheritance)为了提高效率,避免相同权限的重复设置,RBAC 采用了“角色继承”的概念,定义了这样的一些角色,他们有自己的属性,但可能还继承其他角色的属性和权限。角色继承把角色组织起来,能够很自然地反映组织内部人员之间的职权、责任关系。最小权限原则(the Least Privilege Rule)所谓最小权限原则是指:用户所拥有的权力不能超过他执行工作时所需的权限。实现最小权限原则,需分清用户的工作内容,确定

16、执行该项工作的最小权限集,然后将用户限制在这些权限范围之内。在 RBAC 中,可以根据组织内的规章制度、职员的分工等设计拥有不同权限的角色,只有角色需要执行的操作才授权给角色。当一个主体预访问某资源时,如果该操作不在主体当前活跃角色的授权操作之内,该访问将被拒绝。职责分离(Separation of Duty)5对于某些特定的操作集,某一个角色或用户不可能同时独立地完成所有这些操作。职责分离的概念包括:多路共享资源,用功能分解命名互相区分的权限集,对用户进行强制分类,允许层次性的分解权限。.2 RBACRBAC 适用性分析适用性分析在 RBAC 模型中,一个用户通过用户授权获得

17、一个或者几个角色,但角色不能被同时激活;一个角色可以被同时授予多个用户;每个角色有一个或多个节点,一个节点也可以被赋予多个角色;每个节点有一个或者多个功能,一个功能可以被同时挂在不同的节点上,而节点可以有子节点,子节点也可以再有子节点;一个功能对应一个或多个页面;一个页面有一个或多个操作。这样每个用户登录时就可以根据角色得到一棵功能树从而使用系统中的资源。为更真实的描述现实, RBAC 模型还有许多的控制机制。如对 Web 页面多维度和细粒度控制,对角色、功能、节点的静态限制和对角色的动态限制。对页面的限制主要是限制用户在特定时间和特定地点所能看到的功能和所能进行的操作。其他限制主要是在功能被

18、赋予节点时、节点被赋予角色时和角色被赋予用户时的限制。模型中有了这些限制才更完整、更真实地反应现实,从而使实际模型细化的过程更加平滑,现实和计算机实现策略达到较好的融合。页面是 Web 应用系统中最重要的元素,控制页面访问是整个系统安全的重要条件。对页面的访问控制可以从时间和空间两个方面来进行,对页面功能和数据的访问,可以通过用户登录后所带 session 中的信息进行控制。时间约束分为一般时间约束和周期时间约束两种。一般时间约束是指从一个时间点持续到另一时间点之间可以访问某个页面,例如,企业商务系统中的商品招标页面,它在某一指定时间段内开放,对这种约束可以在用户访问网页的时候判断访问时间是否

19、在允许范围内。周期时间约束是指对那些功能和数据周期性开放的页面进行访问控制。空间约束主要是对用户在不同地方(网段)登录所能看到的页面以及页面能提供的信息进行控制。例如,管理部门内部事务所对应的页面通常对用户所在的访问位置有较严的限制。一般系统的高层用户都有一个固定的 IP 段,就可以对那些重要的页面设置允许访问的 IP 范围来达到对关键资源的保护。对页面的空间约束可以分成分网段、分楼层、分房间、分 IP 地址等不同层次的控制。对页面功能和数据的访问需要知道用户的大概类型,主要包括管理员、部门管理员、一般职工、游客(企业或单位以外的人员)等。用户登录后将用户的类型保存到 session 中,在用

20、户访问页面时就可以根据用户的不同类型,以及他们对时间、空间等硬性约束的满足情况来显示相应的功能和数据。6通过了解 RBAC 模型的原理和 RBAC 模型中对访问控制的支持,我们可以看出,RBAC 模型可以很好的应用于已有或将要开发的企业商务 Web 系统中。通过在系统中使用 RBAC 模型,可以很好的解决如下的问题:权限管理混乱的问题。通过在系统中增加角色这个概念,很好的解决了这个问题。在 RBAC 模型中,可以利用角色与系统中的所有权限关联,使得某种角色具有某种特定的权限,从而在为用户设定好相应的角色之后,也就意味着得到了相应的系统权限。控制逻辑混乱的问题。通过使用 RBAC 模型,可以避免

21、在系统中书写负责的控制逻辑来进行访问控制。尤其当系统设计的用户和角色比较多时,单纯的依靠代码进行访问控制将变得相当困难。换句话说,RBAC 模型为我们提供了良好的访问控制支持。在企业商务 Web系统中利用 RBAC 模型,可以简便、科学、清晰地进行访问控制,从而在一定程度上提高了整个 Web 系统的安全性。1.31.3 RBACRBAC 在在 MVCMVC 中的应用现状中的应用现状 网站程序的安全是系统开发人员必须考虑的重要因素之一,因为这涉及到网站的建设者、网站用户的诸多安全问题,如果不处理好,可能会给系统的使用者和管理者带来严重问题。现在普遍在使用的安全措施有如下几种:(1)防止 SQL

22、注入比如 URL、表单等提交信息时,通过一段防止 SQL 注入的过滤代码即可防止出错信息暴露,或者通过转向,当系统出错时转到一个提示出错的页面等。对于文本型输入,如果要进行检查,就得根据字段本身的性质进行。例如如果是年龄,就得限定必须是数字,大小必须限定在一个范围之间,比如说18-120 之间。对于用户名,应该建立一个集合,这个集合里存放有被允许的字符,或被禁止的字符。(2)验证码技术所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素,由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。放在会员注册、留言本等所有客户端提交信息的页面,

23、要提交信息,必须要输入正确的验证码,从而可以防止不法用户用软件频繁注册,频繁发送不良信息等。(3)MD5 加密技术MD5 的全称是 Message-Digest Algorithm 5,当用户登录的时候,系统把用户输入的密码计算成 MD5 值,然后再去和保存在文件系统中的 MD5 值进行比7较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这不但可以避免用户的密码被具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度。(4)数据备份一般采用数据库系统自动定时备份、定时自动删除几天以前的数据等,即可完成数据的备份

24、功能。而图片、文件一般是不能自动备份,需要手工操作,所以我们必须要定期手工对网站的图片、文件进行备份操作。访问控制技术是由美国国防部(Department of Defense, DoD)资助的研究和开发成果演变而来的。这一研究导致两种基本类型访问控制的产生:自主访问控制(Discretionary Access Control, DAC)和强制访问控制(Mandatory Access Control, MAC) 。最初的研究和应用主要是为了防止机密信息被未经授权者访问,近期的应用主要是把这些策略应用到为商业领域。自主访问控制,允许把访问控制权的授予和取消留给个体用户来判断。为没有访问控制权

25、的个体用户授予和废除许可。自主访问控制机制允许用户被授权和取消访问其控制之下的任何客体(object) ,换句话说,用户就是他们控制下的客体的拥有者。然而,对于多数组织来说,最终用户对所访问的信息没有拥有权。对于这些组织,公司或代理机构是事实上的系统客体和处理他们的程序的拥有者。访问优先权受组织控制,而且也常常基于雇员功能而不是数据所有权。强制访问控制,在美国国防部 Trusted Computer Security Evaluation Criteria (TCSEC) 中定义如下:“一种限制访问客体的手段,它以包含在这些客体中的信息敏感性和访问这些敏感性信息的主体的正式授权信息(如清除)为

26、基础” 。强制访问控制是“强加”给访问主体的,即系统强制主体服从访问控制政策。强制访问控制(MAC)的主要特征是对所有主体及其所控制的客体(例如:进程、文件、段、设备)实施强制访问控制。为这些主体及客体指定敏感标记,这些标记是等级分类和非等级类别的组合,它们是实施强制访问控制的依据。系统通过比较主体和客体的敏感标记来决定一个主体是否能够访问某个客体。用户的程序不能改变他自己及任何其它客体的敏感标记,从而系统可以防止特洛伊木马的攻击。强制访问控制一般与自主访问控制结合使用,并且实施一些附加的、更强的访问限制。一个主体只有通过了自主与强制性访问限制检查后,才能访问某个客体。用户可以利用自主访问控制

27、来防范其它用户对自己客体的攻击,由于用户不能直接改变强制访问控制属性,所以强制访问控制提供了一个不可逾越8的、更强的安全保护层以防止其它用户偶然或故意地滥用自主访问控制。以上访问控制策略对于处理一些无需保密但又敏感的信息的政府和行业组织的需求并不是特别的适合。在这样的环境下,安全目标支持产生于现有法律、道德规范、规章、或一般惯例的高端组织策略。这些环境通常需要控制个体行为的能力,而不仅仅是如何根据信息的敏感性为其设置标签从而访问这一信息的个人能力。就基于角色访问控制而言,访问决策是基于角色的,个体用户是某个组织的一部分。用户具有指派的角色(比如医生、护士、出纳、经理) 。定义角色的过程应该基于

28、对组织运转的彻底分析,应该包括来自一个组织中更广范围用户的输入。访问权按角色名分组,资源的使用受限于授权给假定关联角色的个体。例如,在一个商务管理系统中,经理角色可能包括人事管理、工资管理、分配项目等;而一般员工的角色则被限制为仅能浏览自己的一些信息,如基本信息、工资信息和工程项目信息等。基于角色的访问控制模型 RBAC 比传统的自主访问控制和强制访问控制更优越,同时也提供了更高的灵活性和扩展性。RBAC 访问控制模型实现了用户与访问权限的逻辑分离,减少了授权管理的复杂性,降低了管理开销和管理的复杂度。对于现在规模日益增大的基于 MVC 架构的商务信息管理系统来说,采用RBAC 访问控制模型的

29、访问控制模块将会起到越来越大的作用。综上分析,控制访问角色的运用是一种开发和加强企业特殊安全策略,进行安全管理过程流程化的有效手段。运用 RBAC 模型可以很好的解决 Web 系统中提出的访问控制要求,而 DAC、MAC 等等访问控制技术由于各种各样的局限性和特性,都不是 WEB 系统下实现访问控制的最好选择。从目前的应用现状来看,以 MVC 为架构而建成的 WEB 网站特别是商务网站的数量较为庞大,而由于其自身的管理特性,对安全措施的要求也越来越高,这就要求我们找到一种更为有效的权限管理方法去适应网站对访问控制技术的要求。而 RBAC 作为一种科学、合理、灵活、成熟的访问控制技术,最适合于在

30、WEB 环境下使用,所以如何使它应用到那些基于 MVC 架构的网站中去,会是一个具有相当研究价值的课题。9第二章第二章 系统框架分析与设计系统框架分析与设计2.12.1 基于基于 MVCMVC 架构的架构的 WebWeb 系统系统在当前开发的商务系统中,一般都会包括部门管理功能模块,员工管理功能模块,工程项目管理功能模块和员工薪水管理功能模块,以及包括针对员工使用的信息查看模块。先下面给出一个已经设计完善的基于 MVC 架构的 WEB 网站,系统的功能模块图如图 2-1 所示。系统的功能模块部门管理模块员工管理模块工程项目管理模块员工工资管理模块信息查看模块系统功能管理模块系统用户管理模块系统

31、角色管理模块图 2-1 系统功能模块图部门管理模块:针对公司内部的所有的部门进行管理,用户可以方便地添加部门、修改部门信息、删除某一部门和查询某一部门的信息。员工管理模块:针对公司内部的所有的员工进行管理,用户可以方便地添加员工信息、修改员工信息、删除某一员工信息和查询某一部门的所有员工信息。工程项目管理模块:针对公司的工程项目进行管理,用户可以方便地添加工程项目信息、修改某一工程项目的信息、删除某工程项目的信息和查询某一工程项目信息。员工工资管理模块:针对公司内部的所有的员工的薪酬进行管理,用户可以方便地添加工资信息、修改工资信息、删除工资信息和查询某一员工在某段时间内的所有工资信息。信息查

32、看模块:针对公司员工设计的功能模块,通过该模块员工可以方便10的查看自己的基本信息,工资信息以及所负责的工程项目信息。系统功能管理模块:用户可以通过该模块管理系统中涉及到的所有功能,可以添加、删除和修改。系统用户管理模块:用户可以通过该模块管理系统中涉及到的所有用户,可以添加、删除和修改。系统角色管理模块:用户可以通过该模块为系统中的不同的用户设置不同的权限,并能够修改某一用户所赋予的权限。在上述的商务系统中,在安全性上一般会有如下的要求:能够很好的实现访问控制。在一个企业中,存在着很多种不同的用户,如经理、董事长、一般职工,系统维护人员等。当所有的用户面对同一个系统时,就应该做到用户之间要有

33、区分,即进入系统后不同的用户只能实行自身拥有的权限,不可以越权。部分信息的保密。公司中存在着一些决定企业利益的信息,这些信息只能由公司的管理人员来查看和管理,任何非法的侵入都有可能造成不良的后果。现代主流的 Web 系统的体系架构设计基于 J2EE 平台上的 MVC 设计模式,应用 Struts 框架,采用 B/S 模式,具体的架构设计如图 2-2 所示。ActionActionActionHTMLJSPsStruts Tags(JSTL)Style SheetActionServletRequestProcessorWeb ContainerControllerModelPresentati

34、onLayerHttp ResponseHttp RequestBusinessManagement_MessagerRpertiesStruts-config.xmlViewJavaBeanBusinessObjectsDatabase LayerWeb.xmlBusiness LayerClientLayer图 2-2 商务管理系统架构图在图 2-2 中,系统架构可以细分为以下 4 个层次:客户层(Client Layer):运行在用户机器的浏览器中,处理与用户的交互。表现层(Presentation Layer):运行在 J2EE Web 容器中,产生系统的表现逻

35、辑,处理用户的请求并做出响应;整个 Web 层建立在 Struts 框架基础上,其中 View 由 HTML 和 JSP 页面组成,其数据表示是 ActionForm Oracle 9iBrowser11Bean;Controller 由 ActionServlet 组合 Struts-config.xml 和 Action 类组成;而 Model 则交由业务逻辑层来实现。业务逻辑层(Business Layer):运行在 J2EE Web 容器中,完成系统的业务需求,为 Web 层提供所需的业务方法,由 JavaBean 构成系统的 Business Objects(BO) ,并使用 DAO

36、 模式把数据访问封装起来,以供在其他应用层中统一调用。数据源层(Database Layer):即数据库层,存放系统的应用数据,系统采用 Oracle9i 作为数据库服务器。系统的架构可以表示为 JSP+Struts+Database。使用这种架构一方面便于系统的开发和管理;另一方面,层与层之间的开发几乎是完全独立的,从而降低了数据在各层之间的耦合性,提高了系统的可维护性和可扩展性。此外,系统是由 Java 来开发实现的,Java 的跨平台特性实现了系统的可移植性。2.22.2 RBACRBAC 模型的建立模型的建立根据上述商务系统对安全性的需求,通过在 Web 系统中使用 RBAC 模型可以

37、很好的满足各项需求。RBAC 的核心思想就是:根据用户需求,给用户分派各种角色,为不同的角色分配各种权限,用户通过自己所属的角色获得操作权限许可。其核心模型如图 2-3 所示。图 2-3 RBAC 模型核心 RBAC 模型的组成部分是:Users:用户集u1,u2,u3 ,un;Roles:角色集r1,r2,r3, ,rn;OPS:操作集op1,op2,op3,opn12OBJ:客体集obj1,obj2,obj3,objnP= OPS X 0BJ:权限集是不同客体上不同操作的描述pl,p2,p3,. ,pnRolesUsersUA*:用户角色分配关系:多对多;Assigned-users:,角

38、色与用户的映射,将一个角色与一组用户相映射;:权限-角色分配关系,多对多;Assigned privileges : ,角色与权限的映射,将一个角色与一组权限相映射;Session :会话集s1,s2,s3,sn User_sessions :,用户与会话的映射,将一个用户与一个会话相映射;Session_roles :,会话与角色的映射,将一个会话与一组角色相映射;Avail_session_privilege :,在一次会话中一个用户允许的权限;用户:不仅指人,也可以指机器,网络或智能代理。角色:管理员依据安全策略划分出来的操作集合,表示该角色成员所授予的职权和责任。客体:指系统需要保护的

39、资源。权限:对系统中的客体进行特定存取的许可。权限是与客体紧密相关的,不同的系统,其权限规定是不同的,既可以指网络的应用,如对某个子网的访问权限,也可以指对数据库的表单等的访问。权限的粒度大小取决于实际系统的定义。会话:为了对系统资源进行操作,用户需要建立会话,每个会话将一个用户与他所对应的角色集中的一部分建立映射关系,这一角色子集成为被会话激活的角色,在这次会话中,用户可以执行的操作就是该会话激活的角色对应的权限所允许的操作。上述 RBAC 模型是 RBAC 核心模型,此模型保留了 RBAC 的最小特征集,是每个 RBAC 系统都需要的元素。132.32.3 RBACRBAC 模型在模型在

40、MVCMVC 网站中的应用网站中的应用由需求分析可知,需要为企业内部网管理系统设计一个用户权限管理的功能模块,从而达到对用户权限进行管理的目的。当今的大型的信息管理系统都具有功能复杂,用户众多的特点,如果仍采用传统的权限管理方式,直接将权限分配给用户,对具有相同权限的一类用户同样的授权操作将被重复很多遍,一旦用户工作岗位有变化,则对其权限的调整将非常复杂,而基于 RBAC 模型的权限控制方法则大大简化了这种授权管理的复杂度,降低了系统管理的开销。RBAC 模型描述了一种良好的访问控制方法和原理。通过在商务 Web 系统中使用 RBAC 模型可以方便、科学、合理地进行访问控制,有了良好的访问控制

41、,不同的用户在使用系统的时候仅能访问自身被赋予的权限,用户之间不能越权访问,从而保证了信息的安全性和一致性,从而提高了系统的安全性。通过以下几个步骤,可以将 RBAC 模型应用在 MVC 网站中。(1)建立功能的概念。功能,即操作。在系统中,如对员工的添加、删除和修改的操作,都可以描述为一个功能。(2)建立权限节点的概念。权限节点,顾名思义,它对应着一个或一组功能操作菜单,表示了该节点可以进行系统操作的范围。(3)建立角色的概念。将角色与节点对应起来,一个角色可以对应多个节点,一个节点也可以对应多个角色,这是一个多对多的关系。角色与节点对应好之后,也就意味着角色与某一个或某一组功能操作菜单建立

42、了关联。系统中存在不同类型的用户,也即不同的用户隶属于不同的角色。(4)将系统的用户和角色关联起来。一旦一个用户被设置了某个角色,那么也就意味着该用户具有了某些权限。具有了某些权限,也就意味着拥有了某些功能(对系统的操作和管理) 。举例来说,假设系统中存在两个权限节点 1 和 2,两个角色 A 和 B,用户有甲(经理)和乙(部门经理) ,很显然甲和乙在登陆系统后应该具有不同的权限,甲可以管理整个公司的信息,而乙仅能管理所在部门的信息。这时,设定权限节点 1 下包含了管理整个公司信息的所有功能,权限节点 2 下包含了管理某个部门信息的所有功能;将角色 A 与节点 1 进行关联,将角色 B 与节点

43、 2 进行关联。最后,将用户甲的角色设定为角色 A,用户乙的角色设定为角色 B。在用户甲和乙登陆系统后,就会看到自己所具有的功能菜单,其他用户的功能菜单是非可见的,从而实现了访问控制。简言之,通过在系统中设置功能、权限和角色的概念,就可以在系统中实现 RBAC 模型,并让它很好地为 Web 系统提供访问控制功能。14第三章第三章 设计实现设计实现3.13.1 RBACRBAC 框架实现框架实现数据存储是个非常重要的功能需求。系统中很多的地方都要存储数据,并且其格式要求也不相同,数据量也差别较大。良好的设计不但能减少因数据保存不当造成的对系统的损害,而且能显著地提高系统的性能。在考虑数据存储方案

44、时,有三种可行的选择,分别是文件方式、数据库方式、LDAP 方式,这三种方式都有各自的优缺点。文件方式的好处在于简单直观,存取速度最快,但不够安全,在 RBAC 的早期版本中,我们采用的就是文件方式。LDAP 方式可以保证数据的安全和完整性,但使用不方便,普及程度也不高;数据库方式是业界比较认可的主流存储方案,而且现在的数据库技术也比较成熟,是较为理想的选择。有鉴于此,我们在系统中采用了数据库方式作为本系统数据存储方案。以下为数据存储的表结构:1、P_YHB 用户表用于记录用户基本信息。如表 3-1 所示。表表 3-13-1 用户表用户表编号列名类型长度说明约束1*YHIDVARCHAR8用户

45、 ID2YHMCVARCHAR20用户名称3YHMMVARCHAR25用户密码4SSBMVARCHAR5用户所属部门5YHMSVARCHAR500用户描述2、P_JSB 角色表记录和角色相关和信息。如表 3-2 所示。表表 3-23-2 角色表角色表编号列名类型长度说明约束1*JSIDVARCHAR5角色 ID2JSMCVARCHAR50角色名称3JSMSVARCHAR200角色描述可为空154JSXYHZDSNUMBER10此角色下的用户最大数可为空5JSLXVARCHAR1角色类型3、P_YHJSB 用户角色表用于记录用户角色指派的内容,即记录每个角色被赋予了哪些用户。如表3-3 所示。表

46、表 3-33-3 用户角色表用户角色表编号列名类型长度说明约束1*YHIDVARCHAR8用户 ID1.12*JSIDVARCHAR5角色 ID2.14、P_GNB 功能表存放权限,一条记录就是一个权限,一个权限指的是一个用户可以使用的一个功能项,在表中记录了该权限对应的主 URL。如表 3-4 所示。表表 3-43-4 功能表功能表编号列名类型长度说明约束1*GNIDVARCHAR5功能 ID2GNMCVARCHAR50功能名称3GNMSVARCHAR500功能描述可为空4ZURLVARCHAR200主 URL5CZVARCHAR1操作(只读、读写、执行)5、P_JSJDB 角色节点表记录权

47、限角色指派的内容,即记录每个角色所拥有的权限信息。如表 3-5所示。表表 3-53-5 角色节点表角色节点表编号列名类型长度说明约束1*JSIDVARCHAR5角色 ID2.12*JDIDVARCHAR5节点 ID6.16、P_JDB 节点表记录每个节点信息。如表 3-6 所示。表表 3-63-6 节点表节点表编号列名类型长度说明约束1*JDIDVARCHAR5节点 ID162.JDMCVARCHAR50节点名称3.FJDIDVARCHAR5父节点 ID4JDMSVARCHAR500节点描述5JDNXHVARCHAR2节点内序号7、P_JDGNB 节点表记录每个节点所包含的权限信息。如表 3-

48、7 所示。表表 3-73-7 节点功能表节点功能表编号列名类型长度说明约束1IDVARCHAR1节点层次2*GNIDVARCHAR5节点 ID3*JDIDVARCHAR5节点 ID8、P_DEPARTMENT 企业部门表记录每个企业部门所包含的部门信息。如表 3-8 所示。表表 3-83-8 企业企业部门表部门表编号列名类型长度说明约束1*DEPBMVARCHAR3部门编号2DEPMCVARCHAR100部门名称3DEPLXDHVARCHAR25部门联系电话4DEPMANAGERVARCHAR8部门负责人9、P_PROJECT 企业工程项目表记录每个工程项目所包含的工程项目信息。如表 3-9

49、所示。表表 3-93-9 企业工程项目表企业工程项目表编号列名类型长度说明约束1*PRJBHVARCHAR20项目编号2PRJNAMEVARCHAR100项目名称3PRJMANVARCHAR20项目负责人11.14PRJMONEYVARCHAR40项目资金5PRJDATEDATE立项日期10、P_SALARY 企业员工工资表记录每个企业员工的工资信息。如表 3-10 所示。表表 3-103-10 企业员工工资企业员工工资表表17编号列名类型长度说明约束1*IDNUMBER工资帐单序号2SALARY_NUMVARCHAR10工资帐单金额3WORKERBMVARCHAR10员工编号11.14SAL

50、ARY_DATEDATE工资帐单发放日期11、P_WORKER 企业员工信息表记录每个企业员工的信息。如表 3-11 所示。表表 3-113-11 企业员工表企业员工表编号列名类型长度说明约束1*WORKERBMVARCHAR10员工编号2WORKERMCVARCHAR50员工姓名3WORKERAGEVARCHAR3员工年龄4WORKERSEXVARCHAR1员工性别5WORKERADDRESSVARCHAR200员工地址6WORKERLXDHVARCHAR50员工联系电话7WORKERZJHMVARCHAR50员工证件号码8WORKERDEPBMVARCHAR5员工所在部门

51、 RBACRBAC 模型在系统中的实现模型在系统中的实现.1 系统功能模块的实现系统功能模块的实现在功能管理模块中,用户可以进行的操作有:功能添加、修改和删除。系统功能添加的实现过程可以描述为:浏览器ActionForm 类Action 类提交表单Struts-config.xml封装表单数据调用查找JavaBean转向图 3-1 系统功能模块实现的流程图从图 3-1 可以看出,用户在试图添加一个系统功能时,应该首先填写表单,填写好表单后,点击表单的提交按钮之后,会触发一个请求事件(Action) ,该数据库18事件由页面的表单指定。在 Struts-config.xml 文档

52、中找到相应的 Action,同时得到该 Action 使用的 ActionForm 类。此时表单的数据将会保存到该ActionForm 类中,在 Action 中就可以得到表单中的数据。为了完成最终的功能添加,在相应的 Action 实现类中,还需要调用模型层中的业务功能函数,来完成此次的业务逻辑。在相应的 JavaBean 中,完成与数据库的交互,实现对数据的添加。用到的 ActionForm 类是 GnoperatorForm 类,该类继承 ActionForm 类,并具有 gnid,cz,ljxjd,gnmc,gnms,zurl 等属性。GnoperatorForm 的部分实现代码如下:

53、public class GnoperatorForm extends ActionForm private static final long serialVersionUID = 1L;private String gnid;private String cz;private String ljxjd;private String gnmc;private String gnms;private String kfgb;private String zurl;public String getGnmc() return gnmc;public void setGnmc(String gnm

54、c) this.gnmc = gnmc;public String getGnms() return gnms;public void setGnms(String gnms) this.gnms = gnms;实现功能添加的 Action 类 GnoperatorAction.java,部分实现代码如下:19public class GnoperatorAction extends Action public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, Htt

55、pServletResponse response) ActionForward nextdisplay = new ActionForward(); / 生成一个 ActionForward 对象String actionmappingpara = mapping.getParameter(); / 接收 ActionMaping 的参数if (gnoperator.equalsIgnoreCase(actionmappingpara) nextdisplay = gnoperator(mapping, form, request, response); else if (gnoperato

56、r_update.equalsIgnoreCase(actionmappingpara) nextdisplay = gnoperator_update(mapping, form, request, response); else if (gnoperator_getgn.equalsIgnoreCase(actionmappingpara) nextdisplay = gnoperator_getgn(mapping, form, request, response);return nextdisplay;/完成功能添加的实现方法public ActionForward gnoperato

57、r(ActionMapping mapping,ActionForm form,HttpServletRequest request, HttpServletResponse response) GnoperatorForm gnof = (GnoperatorForm) form;ActionForward forward = new ActionForward();String method = (String) request.getParameter(method);dbOp db = new dbOp();response.setCharacterEncoding(gbk);if (

58、method.equalsIgnoreCase(insert) / 新增功能if (db.insertintoGnb(gnof) gnof.setGnmc();gnof.setGnms();20gnof.setZurl();gnof.setZimc(null);gnof.setZims(null);gnof.setZiurl(null);request.setAttribute(result, success);forward = mapping.findForward(success); else request.setAttribute(result, failure);forward =

59、 mapping.findForward(failure); else if (method.equalsIgnoreCase(update) / 更新功能if (db.UpdateGnb(gnof) request.setAttribute(result, 更新成功);forward = mapping.findForward(successupdate); else request.setAttribute(result, 更新失败);forward = mapping.findForward(failureupdate);db.close();return forward;完成功能添加的

60、业务函数存放在 dbOp 类中,它的部分实现代码如下:public class dbOp extends DBOperator /* * 插入一个新的功能 */public boolean insertintoGnb(GnoperatorForm gnof) String gnmc = this.toGBK(gnof.getGnmc();String zurl = this.toGBK(gnof.getZurl();String gnms = this.toGBK(gnof.getGnms();String ljxjd = gnof.getLjxjd();21boolean b = false

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论