已阅读5页,还剩57页未读, 继续免费阅读
(计算机应用技术专业论文)基于aop和rbac扩展模型的访问控制系统的研究与设计.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
桂林理工大学硕士学位论文 摘要 目前,实际应用的各种用户认证和授权管理系统普遍存在着业务逻辑与权限 管理相耦合、缺乏动态访问控制能力以及管理不方便等问题。针对这些问题,本 文研究了如何把基于角色的访问控制模型和面向方面技术相结合来改进权限控 制。 基于角色的访问控制( r b a c ) 是传统的自主访问控制和强制访问控制的替代 方案。在r b a c 中,权限与角色相联系,用户被赋予合适的角色从而取得相应权 限,从而大大简化了权限管理。 但是传统的基于角色的访问控制模型却缺乏动态的访问控制能力,不能对拥 有特定角色的用户和对象实例进行细粒度控制。为了弥补以上缺陷,本文提出了 一个包含团队、任务的访问控制模型( t t r b a c ) 。 在t t - r b a c 中,团队包含拥有特殊角色的用户集和拥有完成特定任务的对象 的角色集。团队任务决定指派给团队的最大权限,团队角色决定团队可执行的最 大权限,团队成员决定谁可以激活成员自身的角色和执行团队任务。团队成员可 以执行由它可以激活的角色所决定的任务。所以,团队定义了一个小而特殊的 r b a c 应用区域,在这个区域中,既了保持r b a c 模型可扩展安全管理的优势,还 可以灵活的激活个人用户的权限和使用特殊对象实例。t t - r b a c 模型克服了传统 r b a c 模型的一些缺点,实现了对拥有特定角色的用户和对象实例进行细粒度控 制。 面向方面的程序设计( a o p ) 用于分离系统中横切多个组件的行为,并把这些 行为抽取出来单独实现。通过这种方式,不需要组件主动校验当前用户的权限, 校验功能在需要的时候被自动触发。这样可以方便的把权限校验功能分散到系统 的各个功能组件里面,提高系统的安全性。 将a o p 应用到用户认证和授权管理系统的开发中来,可以实现应用系统的业 务逻辑与横切安全逻辑之间的解耦,有效地减少应用系统开发人员的关注点,并 提高开发效率。 本文以扩展r b a c 模型为基础,采用m v c ( m o d e l v i e w c o n t r o l l e r ) 设计模式, 结合a o p 技术,设计了一个通用、安全的应用框架,并基于此框架对权限功能模 块与访问控制进行了研究设计。 关键词:访问控制;面向方面编程;t t - r b a c ;m v c 桂林理工大学硕士学位论文 a b s t r a c t a tp r e s e n t ,v a r i o u su s e ra u t h e n t i c a t i o na n da u t h o r i z e dm a n a g e m e n t s y s t e m sh a v es o m et y p i c a lp r o b l e m s ,s u c ha st h ei n t e n s e c o u p li n gb e t w e e n e n t e r p r i s eb u s i n e s sa n du s e ra u t h e n t i c a t i o na n da u t h o r i z e dm a n a g e m e n t s y s t e m ,t h e a b s e n c eo fd y n a m i ca c c e s s c o n t r 0 1 c a p a b i l i t y ,t h e i n c o n v e n i e n c eo ft h ea d m i n i s t r a t i o no ft h es y s t e m ,e t c t h i sp a p e rm a k e s s o m er e s e a r c h e so nh o wt oe n h a n c et h ea c c e s sc o n t r o lw i t hr b a cm o d e la n d a o pt e c h n i q u e r o l e b a s e da c c e s sc o n t r o l ( r b a c ) i sa na l t e r n a t i v et ot r a d it i o n a l d i s c r e t i o n a r ya n dm a n d a t o r ya c c e s sc o n t r o l s i nr b a c ,p e r m i s s i o n sa r e a s s o c i a t e dw i t hr o l e s ,a n du s e r sa r em a d em e m b e r so fa p p r o p r i a t er o l e s t h e r e b ya c q u i r i n gt h er o l e s p e r m i s s i o n s t h i sg r e a t l ys i m p l i f i e s m a n a g e m e n to fp e r m i s sio n s t h i sp a p e rs t u d i e st h ep r o b l e m so ft r a d i t i o n a lr b a ca n dp r e s e n t sa n a c c e s sc o n t r o lm o d e lt h a ti n t e g r a t e st h et e a m ,t a s kw i t hr b a c ( t t r b a c ) i nt t r b a cat e a me n c a p s u l a t e sac o l l e c t i o no fu s e r si ns p e c i f i c r o l e sa n das e to fr o l e sw i t ht h eo b j e c t i v eo fa c c o m p l i s h i n gs p e c i f i ct a s k s t h et e a mt a s k sd e c i d et h em a x i m u mp e r m i s s i o n sa s s i g n e dt ot h et e a m , t h e t e a mr o l e sd e c i d et h em a x i m u mp e r m i s s i o n st h a tt h et e a mc a np e r f o r m ,a n d t h et e a mm e m b e r sd e c i d ew h oc a na c t i v eh i s h e rr o l e sa n dp e r f o r mt h et e a m t a s k sint h et e a m at e a mm e m b e rc a np e r f o r mw h a tt a s k sisd e cid e db yw h a t r o l e sh e s h ec a na c t i v a t ei nt h et e a m t h et t - r b a cm o d e lo v e r c o m e st h e s h o r t c o m i n g so ft r a d i t i o n a lr b a ct h a tl a c k st h ea b i l i t yt os p e c i f ya f i n e 。g r a i n e dc o n t r o lo ni n d i v i d u a lu s e r si nc e r t a i nr o l e s a n do n i n d i v i d u a lo b j e c ti n s t a n c e s a s p e c t o r i e n t e dp r o g r a m m i n g ( a o p ) i su s e dt os e p a r a t et h eb e h a v i o r , w h i c hc r o s s c u tm a n yc o m p o n e n to ft h es y s t e m t h e s eb e h a v i o r sc a nb e i m p l e m e n t e ds e p a r a t e l y b ys u c ha p p r o a c h ,i n s t e a di n v o k e st h ea c c e s s v e r i f yf u n c t i o nb yc o m p o n e n t ,t h ef u n c t i o ni st r i g g e r e da u t o m a t i c a l l y t h e nt h ea c c e s sc o n t r o lc a nb es c a t t e r e di n t ot h ec o m p o n e n t so ft h es y s t e m , a n de n h a n c et h es a f e t yo ft h es y s t e m t h i sp a p e rd e s c r i b e san e wa p p r o a c ht od e v e l o pu s e ra u t h e n t i c a t i o n a n da u t h o r i z a t i o ns y s t e mb a s e do na s p e c t o r i e n t e dp r o g r a m m i n gt e c h n o l o g y i i 桂林理工大学硕士学位论文 i tr e a l i z e st h ed e c o u p li n go ft h ec o r ec o n c e r n sa n dt h ec r o s s c u t t i n g c o n c e r n sf r o mb u s i n e s sa n ds e c u r i t ya n di m p r o v e sd e v e l o p m e n te f f i c i e n c y i nt h isp a p e r ,w eh a v ed e v e l o p e dan e wa c c e s sc o n t r o lm o d e lt h a t i n t e g r a t e sr b a c ,m v c ,a o pc o n c e p t s ,w h i c hi st r a d i t i o n a la n ds a f e w ea l s o o f f e ran e wd e s i g no fu s e ra u t h e n t i c a t i o na n da u t h o r i z a t i o ns y s t e mb a s e d o nt h es t u d i e sa b o v e k e y w o r d s :a c c e s sc o n t r o l ,a s p e c t o r i e n t e dp r o g r a m m i n g ,t t r b a c ,m v c 研究生学位论文独创性声明和版权使用授权书 独创性声明 本人声明:所呈交的论文是本人在导师指导下进行的研究工作及取得的研究 成果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含他人已 经发表或撰写过的研究成果,也不包含为获得其它教育机构的学位或证书而使用 过的材料。对论文的完成提供过帮助的有关人员已在论文中作了明确的说明并表 示谢意。 学位论文作者( 签字) : 羝! 匝 签字日期:丝12 :f2 一一 学位论文版权使用授权书 本学位论文作者完全了解( 学校) 有关保留、使用学位论文的规定,有权保留 并向国家有关部门或机构送交论文的印刷本和电子版本,允许论文被查阅和借 阅。本人授权( 学校) 可以将学位论文的全部或部分内容编入有关数据库进行检 索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。同时授权中国 科学技术信息研究所将本学位论文收录到中国学位论文全文数据库,并通过 网络向社会公众提供信息服务。( 保密的学位论文在解密后适用本授权书) 学位论文作者签名:张l l 巾 签字日期:b 。7 年6 月n 日 新嫁岛喇 签字日期:砷莎月,7 日 桂林理工大学硕士学位论文 1 绪论 1 1 研究背景 网络安全已经越来越引起人们的重视。网络安全就是要做到保障各种网络资 源稳定、可靠地运行及受控、合法地被使用。通常为了提高服务器的信息安全访 问,用户在进行正常的访问前,服务器往往都需要认证用户的身份、确认用户是 否授权,也就是进行访问控制。访问控制管理允许被授权的主体对某些资源的访 问,同时拒绝向非授权的主体提供服务。进行访问控制管理的最终目的是加强信 息有效、安全的使用,同时对不同用户实施不同的访问许可,它是系统保密性、 完整性、可用性和合法使用的基础。 关于访问控制,人们提出了各种对保护数据加以控制的安全模型,如自主访 问控制( d i s c r e t i o n a r ya c c e s sc o n t r o l ,简称d a c ) 、强制性访问控制( m a n d a t o r y a c c e s sc o n t r o l ,简称m a c ) ,这些模型适用于不同的应用程序和应用环境,它 们通常都是采用基于员工一组的安全模型。而r b a c 模型具有简化管理的优势,更 适合于大型系统的管理应用。 基于角色的访问控制r b a c ( r o i e b a s e da c c e s sc o n t r 0 1 ) 的概念是从2 0 世 纪7 0 年代对在线的多用户、多应用系统的研究开始的。j s p a r k 和r s a n d h u 研究了w e b 上r b a c 的实现策略,提出了利用安全c o o k i e 、智能认证以及l d a p 三种实现方法。许多大型数据库产品以及操作系统软件产品都相继实现了基于角 色的安全访问控制。 但是,目前应用的访问控制系统还存在着许多问题。 首先,目前的用户认证和授权管理系统的开发通常采用面向对象的程序设计 方式,这样的设计方式会造成企业应用系统的业务逻辑与用户认证和授权管理系 统的安全逻辑,特别是授权逻辑的耦合,即企业应用系统存在着交织的业务逻辑 和安全逻辑,这种需求和实现的不匹配造成了代码交织以及代码分散的现象,从 而也导致了开发人员不能有效地分离关注,降低了工作效率;同时,业务模块与 横切关注之间的紧耦合也造成应用系统复用率降低等问题。 其次,对于那些用户众多的企业应用系统而言,采用传统的访问控制模型会 造成系统维护的巨大困难。目前采用的比较多的是基于角色访问控制模型,它通 过角色机制有效地降低了管理的复杂度,但是缺乏动态的访问控制能力,如不能 动态地调整用户角色分配关系等。 可见解决这些问题无论在学术上还是在实际应用上都有重要的意义。 本文针对以上问题,提出了一种改进的基于角色的访问控制模型,新模型可 以增强访问控制的能力,使得基于该模型的实现拥有动态访问控制的能力,同时 桂林理工大学硕士学位论文 也更加便于管理;同时,将面向方面的程序设计技术( a o p ) 应用到用户认证和授 权管理系统的开发中来,实现应用系统业务逻辑与横切安全逻辑之间的解耦,可 以有效地减少应用系统开发人员的关注点,提高开发效率。 1 2 研究现状 目前对r b a c 已有较广泛的研究,其中较为深入的是美国g e o r g em a s o n 大学 的r b a c 9 6 和a r b a c 9 7 模型,另外还有美国国家标准与技术局( n i s t ) 研究小组的 r b a c 模型,以及s q l 3 r b a c 模型等。目前,市场上有很多r b a c 产品,并且在许 多操作系统、数据库、应用层软件和防火墙系统中得到广泛应用。 r b a c 只是一个模型,所以当今对r b a c 的研究重点放在如何在特定应用系统 中使用这种访问控制技术。虽然目前在w e b 上有很多实现r b a c 的方案,如l d a p 目录服务,智能认证等方案,但是这些方案的灵活性、适用性和可扩展性普遍较 差,不适合大规模多用户的w e b 应用系统。 a o p 技术最初由施乐公司帕洛阿尔托研究中心( x e r o xp a r c ) 的研究人员就对 面向对象思想的局限性进行分析后而提出的一种新的编程思想,它在j a v a 平台 下最先得到应用。就在p a r l 对于面向方面编程进行研究的同时,美国 n o r t h e a s t e r nu n i v e r s i t y 的博士生c r i s t i n al o p e s 和其同事也开始了类似的 思考。最终,美国国防先进技术研究计划署( d e f e n s ea d v a n c e dr e s e a r c h p r o j e c t sa g e n c y 即d a r p a ) 注意到了这项工作,并提供了科研经费,鼓励将二 者的工作成果结合起来。他们通过定义一套j a v a 语言的扩展系统,使开发者可 以方便的进行面向方面的开发,这套扩展系统被称为a s p e c t j 。之后,a s p e c t j 在2 0 0 2 年被转让给e c l i p s ef o u n d a t i o n ,从而成为在开源社区中a o p 技术的先 锋,也是目前最为流行的a o p 工具。 尽管a o p 是一种新技术,但是它的发展速度非常快,如今出现了一大批比较 成熟的a o p 框架,或在原有框架技术上扩展了对a o p 技术的支持,如 a s p e c t w e r k z 、j b o s s 、s p r i n g 、f r a m e s e r v e r 等。a o p 得到以r u p 之父i v a rj a c o b s o n 为代表的科学家们的大力推崇,他们认为a o p 将最终改变整个软件开发的方式, 并且能更完美地实现“用例驱动”的开发思想。 1 3 本文的研究内容和组织结构 ( 1 ) 研究内容 针对传统r b a c 模型存在的问题,提出了一个包含团队和任务的访问控制模 型,能对拥有特定角色的用户和对象实例进行细粒度控制。 分析了m v c 设计模式的优势和劣势,将面向方面技术( a o p ) 引入m v c 模型中, 2 桂林理工大学硕士学位论文 把原来分散在控制器、视图、模型层的横切关注点抽取到方面中实现,从而使整 个系统的层次更加清晰。整个系统采用改进之后的基于a o p 的横切关注点实现架 构。 将面向方面的程序设计技术( a o p ) 应用到用户认证和授权管理系统的开发中 来,实现企业应用系统业务逻辑与横切安全逻辑之间的解耦,从而有效地减少了 应用系统开发人员的关注点,提高了开发效率,提高了应用系统以及用户认证和 授权管理系统的复用率。 ( 2 ) 组织结构 第一章概述了课题的研究背景和研究现状,并对论文的研究内容和结构进 行说明; 第二章详细介绍了面向方面技术( a o p ) 的思想及相关概念; 第三章针对传统r b a c 模型的一些缺点,提出了一个新的基于角色的访问控 制模型: 第四章提出了一个较为完善的访问控制系统架构; 第五章以一个应用实例说明了基于新访问控制系统的开发方案的可行性: 第六章总结与展望。主要是对全文工作的一个回顾与总结,以及对下一步 的研究和工作重点进行展望: 桂林理工大学硕士学位论文 2 面向方面编程( a o p ) 2 1 引言 a o p 是一种关注点分离技术,通过运用a s p e c t 这种程序设计单元,允许开 发者使用结构化的设计和代码反映其对系统的认识方式。与所有其它的关注点分 离技术一样,a o p 的目标是使设计和代码更加模块化和更具结构性,使关注点局 部化而不是分散于整个系统中,同时与系统其它部分保持良好定义的接口,从而 真正达到“关注点分离,分而治之”的目的【。 2 2a o p 背景介绍 a o p 是a s p e c to r i e n t e dp r o g r a m m i n g 的缩写,即面向方面编程。简单地说, a o p 就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任,例如事务 处理、日志管理、权限控制等,封装起来,以减少系统的重复代码,降低模块间 的耦合度,并有利于未来的操作和维护。 实质上,a o p 只是o o p 的一种补充或某种改进,它转换了编程的范式和视角, 关注了一直以来被o o p 忽略或者说未能解决好的角落,使开发人员可以更好地将 本不该彼此纠缠在一起的责任分离开来。通过面向方面的编程,可以将程序的责 任分开,对象与方面互不干扰。面向方面的模块并非显式地为对象所调用,而是 通过注入或截取的方式,去获得被封装的对象内部方法间的消息,然后做出相应 地处理【1 1 。也许面向方面的模式破坏了对象的封装,但正因如此,才能降低模块 之间的耦合度。同样地,通过对“方面”的封装,将这些通用的功能从不同的类 中分离出来,使不同的模块都能共享同样的“方面”,这也极大地减少了重复代 码。 当前,各种a o p 技术层出不穷,其中相当成熟完善适用于商业开发的a o p 技术主要包括a s p e c t j 、a s p e c t w e r k z 、j b o s sa o p 和s p r i n ga o p ,这些都是适 合用于商业开发中的开源项目。a o p 是一种概念,不同的技术可以有不同的实现。 在语法方面,a s p e c t w e r k z 、j b o s sa o p 和s p r i n ga o p 都在没有改变j a v a 语言语法的情况下加入了方面语义,而a s p e c t j 则对j a v a 语言进行了扩展。 在声明方式方面,a s p e c t j 在代码中对方面进行声明。a s p e c t w e r k z 和 j b o s s a o p 支持用元数据对j a v a 代码进行注释,或者在独立的x m l 文件中对方面 进行声明。在s p r i n ga o p 中,则完全用x m l 对方面进行声明,比起j b o s sa o p 和a s p e c t w e r k z ,s p r i n ga o p 提供了更加精细的配置。 在性能方面,a s p e c t j 通过编译时对目标二进制类的增强获得面向方面能 力,所以在编译时会带来开销,运行时可获得更快的速度,j b o s sa o p 和s p r i n g 4 桂林理工大学硕士学位论文 a o p 采用基于拦截的技术,在运行时有更多的工作要做。相比之下,a s p e c t 的 构建时开销最多,a s p e c t w e r k z 次之,j b o s sa o p 再次,s p r i n ga o p 没有构建时 开销f 2 】o 2 3a o p 的相关概念 ( 1 ) 切面( a s p e c t ) 切面是你要实现的交叉功能。它是应用在系统模块化的一个切面或领域。切 面的最常见例子是日志记录。日志记录在系统中到处都要用到,利用继承来重用 日志模块不合适。然而,你可以创建一个日志记录切面,并且使用a o p 在系统中 应用。 ( 2 ) 连接点( o i n p o i n t ) 连接点是应用程序执行过程中插入切面的地点。这个地点可以是方法调用, 异常抛出,或者是要修改的字段。切面代码在这些地方插入到你的应用领域中, 添加新的行为。 ( 3 ) 通知( a d v i c e ) 通知是切面的实际实现。它通知应用系统新的行为。在日志例子中,日志通 知包含了实现日志功能的代码,如向日志文件写日志。通知在连接点插入到应用 系统中。 ( 4 ) 切入点( p o i n t c u t ) 切入点定义了通知应该应用在哪些连接点。通知可以应用到a o p 框架支持的 任何连接点。切入点让你指定通知应用到什么地方。通常通过指定类名和方法名, 或者匹配类名和方法名式样的正则表达式来指定切入点。一些a o p 框架允许动态 创建切入点,在运行时根据条件决定是否应用到切面,如方法参数值。 ( 5 ) 引入( i n t r o d u c ti o n ) 引入允许你为已存在类添加新方法和属性。 ( 6 ) 目标对象( t a r g e t ) 目标对象是被通知对象。它既可以是你编写的类也可以是你要添加定制行为 的第三方类。如果没有a o p ,这个类就必须要包含它的主要逻辑以及其他交叉业 务逻辑。有了a o p ,目标对象就可以全身心地关注主要业务,忘记应用其上的通 知。 ( 7 ) 代理( p r o x y ) 代理是将通知应用到目标对象后创建的对象。对于客户对象来说,目标对象 ( 应用a o p 之前的对象) 和代理对象( 应用a o p 之后的对象) 是一样的。也就是 说,应用系统的其他部分不用为了支持代理对象而改变。 桂林理工大学硕士学位论文 ( 8 ) 织入( w e a v i n g ) 织入是将切面应用到目标对象从而创建一个新的代理对象的过程。 2 4a o p 基本思想 a o p 是一种新的编程范例,其基本思想是分离横切关注点,使其模块化。一个 关注点就是一个实现某种特定功能的模块。任何一个软件系统都可以被分为核心 业务模块和系统级模块,也即核心业务关注点和系统级关注点。核心业务关注点 是指系统的核心业务逻辑,如银行系统当中的注册客户、转帐、缴费等;系统级 关注点是一些与每个业务子系统都关联的公共模块,如日志、事务、安全等。这 种系统级关注点横跨了多个核心业务模块,与核心业务交织在一起。a o p 就是要分 散这些横切关注点,通过提取横切代码,实现横切代码的模块化,从而将横切关 - 系广泛分布的实现聚拢到一个单元中。 2 5a o p 与o o p a o p ( a s p e c to r i e n t e dp r o g r a m m i n g ,面向方面编程) ,可以说是o o p ( o b j e c t o r i e n t e dp r o g r a m m i n g ,面向对象编程) 的补充和完善。o o p 引入封装、继承和 多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们 需要为分散的对象引入公共行为的时候,o o p 则显得无能为力。也就是说,o o p 允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能。 日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能 毫无关系。对于其它类型的代码,如安全性、异常处理等也是如此。这种散布在 各处的无关的代码被称为横切( c r o s s c u t t i n g ) 代码,在o o p 设计中,它导致了大 量代码的重复,不利于各个模块的重用p j 。 而a o p 技术则恰恰相反,它利用一种称为“横切”的技术,剖解开封装的对 象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其名为 “a s p e c t ,即方面。所谓“方面 ,简单地说,就是将那些与业务无关,却为业 务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块 间的耦合度,并有利于未来的操作和维护。 而且,a o p 也不会抛弃现有的o o p 和结构化程序设计等技术的思想精髓。a o p 构建在o o p 系统上,可以说o o p 是a o p 的技术基础,a o p 是对o o p 的继承和发展。 相比于以前的程序设计方法学,a o p 更好地将关注点分离,从而可以模块化地实 现横切特性。当使用a o p 编程时,可以结合需求,选择合适的实现结构:过程、 对象或者a s p e c t 。 a o p 代表的是一个横向的关系,如果说“对象”是一个空心的圆柱体,其中 6 桂林理工大学硕士学位论文 封装的是对象的属性和行为,那么面向方面编程的方法,就像一把利刃,将这些 空心圆柱体剖开,以获得其内部的信息。而剖开的切面,也就是所谓的“方面 了。然后它又以巧夺的方法将这些剖开的切面复原,不留痕迹。 2 6s p rin ga o p 不是所有的a o p 框架都按同样的方式实现。它们在能提供的连接点种类上有 所不同。有些允许你在字段修改级别上应用通知,而有些只能在方法调用上暴露 连接点。他们在何时如何织入切面上也有所不同。无论什么情况,能够创建连接 点,定义切面在哪个连接点织入是a o p 框架的关键。下面介绍一下s p r i n g 的a o p 框架的关键点【4 】。 ( 1 ) 用j a v a 编写s p r i n g 通知 在s p r i n g 中所有的通知都以j a v a 类的形式编写,这意味着开发者可以像普 通j a v a 开发那样在集成开发环境( i d e ) 中开发切面。而且,定义在什么地方应 用通用的切入点通常编写在s p r i n g 的配置文件中。 其他框架,尤其是a s p e c t j 需要特定的语法来编写切面和定义切入点。这种 方式既有缺点也有优点。通过使用a o p 特殊语言,你可以得到更强大和细致的控 制,以及更加丰富的a o pi 具。 ( 2 ) s p r i n g 的运行时通知对象 代理b e a n 只有在第一次被应用系统需要的时候才被创建。如果使用的是 a p p l i c a t i o n c o n t e x t ,代理对象在b e a n f a c t o r y 载入所有b e a n 的时候被创建。因 为s p r i n g 在运行期创建代理,所以使用s p r i n ga o p 不需要特殊编译器。 s p r i n g 有两种代理创建方式。如果目标对象实现了一个或多个接口暴露的 方法,s p r i n g 将使用j d k 的j a v a 1 a n g r e f l e c t p r o x y 类创建代理。这个类让 s p r i n g 动态产生一个新的类,它实现了所需的接口,织入了通知,并且代理对 目标对象的所有请求。 如果目标对象没有实现任何接口,s p r i n g 使用c g l i b 库生成目标对象的子 类。在创建这个子类的时候,s p r i n g 将通知织入,并且将对目标对象的调用委 托给这个子类。当使用这种代理生成方式时,需要将s p r i n g 发行包中l i b c g l i b 目录下的j a r 文件发布到应用系统中。在使用这种代理生成方式时,需要注意两 个要点: 对接口创建代理优于对类创建代理,因为这样会产生耦合度更低的系统。对 类代理是让遗留系统或无法实现接口的第三方类库同样可以得到通知。这种方式 应该是备用方案,而不是第一选择。 标记为f i n a l 的方法不能被通知,因为s p r i n g 是为目标类产生子类。任何 7 桂林理工大学硕士学位论文 需要被通知的方法都被复写,将通知织入。f i n a l 方法是不可能做到的。 ( 3 ) s p r i n g 实现了a o p 联盟接口 a o p 联盟是一个由多个致力于实现j a v aa o p 的各个子项目组合的项目。a o p 联盟与s p r i n g 有同样的信念,就是a o p 能够为j a v a 企业级应用系统提供比e j b 更加清晰、简单的解决方案。它的目标是标准化a o pj a v a 接口,使各种j a v aa o p 实现可以互通。这意味着实现a o p 联盟的接口( 如s p r i n g 的实现) 通知可以在 任何兼容a o p 联盟的框架中重用。 ( 4 ) s p r i n g 只支持方法连接点 正如前面提到的,连接点模型在多种a o p 实现中都可以得到。s p r i n g 只支 持方法连接点。这和其他a o p 框架不一样,如a s p e c t j 和j b o s s ,它们还提供了 属性接入点。这样妨碍了你创建特别细致的通知,如对更新对象属性值进行拦截。 然而,由于s p r i n g 关注于提供一个实现j 2 e e 服务的框架,所以方法拦截可 以满足大部分需求,而且s p r i n g 的观点是属性拦截破坏了封装。面向对象的基 本概念是对象自己处理工作,其他对象只能通过方法调用得到处理结果。让通知 触发在属性值改变而不是方法调用上无疑是破坏了这个概念。 2 7 本章小结 本章介绍了a o p 的基本思想和实现原理,对a o p 和o o p 做了对比,并着重介 绍了s p r i n ga o p 。通过使用a o p 机制,权限处理代码从业务模块代码中分离出 来,功能模块中权限逻辑的访问代码消失。客户端访问功能模块时,由a o p 编译 引擎动态拦截,验证权限。这样权限管理处理代码作为a s p e c t 在多个组件之间 进行共享,得到最大限度的重用,从而有效的降低了系统模块间的耦合度;并且 采用a o p 比采用传统的o o p 更易维护和扩展,由于后期需求变更给软件带来的风 险也更小。 桂林理工大学硕士学位论文 3r b a c 扩展模型 3 1 引言 本章对美国国家标准与技术局( n i s t ) 的标准r b a c 模型做了深入分析和研 究,通过在n i s tr b a c 模型中增加团队和任务两部分,扩展了n i s tr b a c 模型。 新模型比传统的r b a c 模型更加灵活,更能满足协作性的要求。 3 2n i s ir b a c 模型介绍和概念 3 2 1nis ir b a c n i s tr b a c 模型由四部分组成,即c o r er b a c 、h i e r a r c h i c a lr b a c 、静态职 责分离( s s d ) 和动态职责分离( d s d ) 。c o r er b a c 定义了r b a c 模型最基本的元素、 元素集及元素间的相互关系。h i e r a r c h i c a lr b a c 支持角色继承的关系。静态职 责分离指在系统初始化时,不能把冲突的角色分配给同一个用户。动态职责分离 指相互冲突的角色可以同时分配给同一个用户,但在一次s e s s i o n 中用户不能同 时扮演两个相冲突的角色f 5 】【2 6 1 。n i s tr b a c 模型如图3 1 所示。 婶一 r 角色继承 图3 1n i s tr b a c 模型 3 2 2c o r er b a c 如图3 1 所示( 不包括r h 、s s d 、d s d ) ,c o r er b a c 包括用户( u s e r s ) 、角色 ( r o l e s ) 、对象( o b s ) 、操作( o p s ) 和权限( p e r m s ) 五个基本元素。这个模型的基本 思想是把用户指派给角色,权限指派给角色,用户通过角色取得权限。此外,c o r e r b a c 模型包含一系列会话( s e s s i o n s ) ,每一个会话是用户与指派给它的已激活 角色子集之间的映射。 9 桂林理工大学硕士学位论文 r b a c 的重点是角色关系的概念,在角色关系中,角色是策略的语义构造者。 图3 1 显示了用户角色指派和权限角色指派关系。箭头表示多对多关系。例如, 用户可以被指派给一个或多个角色,角色也可以被指派给一个或多个用户。每个 会话是一个用户与可能分配给它的多个角色之间的映射,每个用户与一个或多个 会话相联系。用户权限是在所有用户会话中激活角色的权限。以下是c o r er b a c 的定义: u s e r s ,r o l e s ,o p s ,o b s 分别代表用户、角色、操作和对象 u r a u s e r s x r o l e s ,用户到角色的多对多分配关系 a s s i g n e d u s e r s ( r :r o l e s ) - , 2 u s e r s ,角色r 到用户集的映射。即: a s s i g n e d u s e r s ( r ) = u u s e r sl ( u ,r ) u r a ) p e r m s = 2 ( o p s o b 勖,代表权限集 p r a g p e r m s xr o l e s ,权限到角色的多对多指派关系 a s s i g n e dp e r m i s s i o n s ( r :r o l e s ) 专2 p e 蹦s ,角色r 到权限集映射。即: a s s i g n e d _ p e r m i s s i o n s ( r ) = p ep e r m si ( p ,r ) p r a o p ( p :p e r m s ) 一 o p c o p s ,权限到操作的映射,该映射授予与权限p 相关的 操作集 o b ( p :p e r m s ) 专 o b c o b s ) ,权限到对象的映射,该映射授予与权限p 相关的 对象集 s e s s i o n s ,代表权限集 u s e r s e s s i o n s ( u :u s e r s ) 专2 s e s s l o n 5 ,用户u 到会话集的映射 s e s s i o n r o l e s ( s :s e s s i o n s ) 寸2 r o l e s ,会话s 到角色集的映射。即: s e s s i o n _ r o l e s ( s i ) rer o l e sl ( s e s s i o n _ u s e r ( s i ) ,r ) u r a ) a v a i l s e s s i o n _ p e r m s ( s :s e s s i o n s ) - , 2 p e r m s ,一个会话中的用户可用权限, u ,、a s s i g n e d _ p e r m i s s i o n s ( r ) 3 2 3h i e r a r c h a ir b a c 如图3 1 所示( 不包括s s d ,d s d ) ,h i e r a r c h a lr b a c 引入了角色继承( r h ) 。 角色继承在角色间定义了一种偏序关系,这种关系通过描述角色权限来实现。也 就是说,如果角色r e 的所有权限都是角色r 。的权限,那么就说角色r l 继承角色r e 。 一般角色继承支持角色间任意的偏序关系,而且允许角色间的多重继承。一 般角色继承的定义如下: r h g r o l e s x r o l e s ,集合r o l e s 上的一个偏序,这里用符号表示,如果 r l - - r 2 ,则只需满足r 2 的所有权限也必须是r l 的权限,且r 1 的所有用户也都是r 2 1 0 桂林理工大学硕士学位论文 的用户。即: r l r 2 = ,a u t h o r i z e d p e r m i s s i o n s ( r e ) c a u t h o r i z e d _ p e r m i s s i o n s ( r 1 ) a a u t h o r i z e d u s e r s ( r 1 ) c a u t h o r i z e d u s e r s ( r 2 ) a u t h o r i z e d u s e r s ( r r o l e s ) - ) 2 u s e r s ,角色继承中角色r 到团队集的映射 即: a u t h o r i z e du s e r s ( r ) = u eu s e r sr 。r ( u ,r ) u r a ) a u t h o r i z e d _ p e r m i s s i o n s ( r :r o l e s ) - ) 2 p e r m s ,角色继承中角色r 到权限集 的映射。即: a u t h o r i z e d _ p e r m i s s i o n s ( r ) = p ep e r m sr r ( p ,r ) p r a 在受限继承中,角色被限制为只能有一个子类,角色间不存在多重继承。我 们用r l r 2 表示r l 是r 2 的直接父类,且在r l 与r 2 之间没有其他任何角色。也就 是说,在角色继承中不存在角色r 3 满足r l r 3 r 2 ,当r l r 2 且r l r 3 。 受限继承定义如下: v r ,r l ,r 2 e r o l e s ,r r l a r - r 2 = r l = r 2 3 2 4c o n s t r a i n e dr b a o c o n s t r a i n e dr b a c 在r b a c 模型中增加了职责分离。职责分离通过指定具有 不同技能或不同利益的人去完成不同的业务功能,来尽可能防止或减少欺诈及偶 然错误带来的损失。静态职责分离( s s d ) ,即在系统初始化的时候,当角色指派给 用户时判断是否将冲突的角色分配给了同一个用户。在r b a c 标准中,冲突的角 色被定义为一个二元关系,就是说,任何一个用户只能拥有其中的一个【6 j 。 s s d c ( 2 r o l e s n ) 是静态职责分离中的一个二元组( r s ,n ) ,r s 是一个角色 集,n 是一个大于2 的自然数,t 是r s 的一个子集,给定一个二元组( r s ,n ) s s d , 对于一个用户,在集合r s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 课件活动安全制度
- 箴言书屋体验营销的营销策略研究
- 人民法庭安全课件
- 建筑工程施工组织与管理能力测评试卷及答案
- 管理学案例分析题及答案包
- 家庭理财规划策略测试卷及解析
- 地理形考试题与答案详解
- 家庭安全教育计划小孩防坏人知识测试及答案
- 工厂入职测试题及答案
- 建筑工程技术规范与安全知识测试卷
- 建筑消防设施维护保养方案
- 《胸痛中心质控指标及考核标准》(第三版修订版)
- 仓库安全风险辨识清单
- 陕煤集团榆林化学有限责任公司招聘笔试
- 前列腺癌放疗护理
- 智联国企行测笔试题库
- 【MOOC】信息社会与人工智能-山东大学 中国大学慕课MOOC答案
- 2024 年福建省中学生生物学竞赛初赛试题(解析版)
- 工地劳务分包合同书
- Chinese Farming Civilization知到智慧树期末考试答案题库2024年秋东北农业大学
- 房屋永久居住权协议书范本
评论
0/150
提交评论