




已阅读5页,还剩63页未读, 继续免费阅读
(计算机科学与技术专业论文)基于spring的j2ee安全框架的研究与应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中文摘要 摘要:企业级应用是指那些为商业组织、企业而创建并部署的解决方案及应用。 一个理想的企业级应用系统平台应该具备良好的安全性。 j 2 e e ( j a v a2p l a t f o r me n t e r p r i s ee d i t i o n ) 是一个基于j 越,a2 平台独立的、安 全的企业级开发平台。j 2 e e 安全技术为基于j 2 e e 架构的应用系统提供了多种安 全服务。但是,j 2 e e 安全机制仍然存在一些缺陷,使得这些安全机制在便捷性开 发过程中不能满足用户需求。而a c e g i 安全框架不仅能够兼容j 2 e e 安全机制,在 敏捷开发方面也能很好的满足企业用户的开发需求。 a c e g i 是一个基于s p r i n ga o p 技术的安全框架,它独立于系统业务逻辑,可 以灵活地为系统部署安全服务。a c e g i 可以与大多数w e b 框架无缝集成,因此它 可以方便地搭建在基于j 2 e e 的企业级系统框架之上,为系统提供认证授权等方面 的服务。 基于以上,本文针对实际的项目“培训管理系统的开发主要作了如下工作: 1 、介绍j 2 e e 本身自带的安全机制并分析其的缺陷。 2 、对基于角色访问控制( r b a c ) 理论进行分析和阐述。 3 、详细研究基于s 蝉n g 的a c e g i 安全框架提供的认证与授权机制。 4 、给出a c e g i 安全框架在“培训管理系统中的实现,并对a c e g i 存在的不 足之处进行改进。 关键词:j 2 e e 安全机制;角色访问控制;认证与授权;s p r i n g ;a c e g i ; 分类号:t p 3 1 9 a bs t r a c t a b s t r a c t :e n t e r p r i s ea p p l i c a t i o n sr e f e r st oa p p l i c a t i o n sa n ds o l u t i o n st l l a t d 印i o 删f o rc o m m e r c i a lo r g a n i z a t i o n sa n dl a r g ee n t e r p r i s e s a ni d e a l e n t e r p r i s e a p p l i c a t i o n sp l a t f o r ms h o u l db eu p g r a d i n ge a s i l y ,r e l i a b l e ,s a f e ,a n dh a v ea f l e x i b i l i t y a r c h i t e c t u r e j 2 e e ( j a v a2p l a t f o r me n t e r p r i s e e d i t i o n ) i sa na r c h i t e c t u r et h a td e f t n e dt h e s t a n d a r df o rd e v e l o p i n gp l a t f o r m i n d e p e n d e n t ,s e c u r ee n t e r p r i s ea p p l i c a t i o n s j 2 e e s e c i m t ym e c h a n i s m sp r o v i d eaw i d er a n g eo fs e c u r i t ys e r v i c e sf o ra p p l i c a t i o ns y s t e m w h i c hb a s e do nj 2 e e f r a m e w o r k h o w e v e r , t h e s em e c :h 砌s m ss t i l lh a v e8 0 m e s h o r t c o m i n g s , s ot h a tc a nn o t s a t i s f yu s e rn e e d si nt h ep r o c e s so fc o n v e n i 朗c e d e v e l o p m e n t a c e g is e c u r i t yf r a m e w o r kn o to n l yb ec o m p a t i b l ew i t hj 2 e es e c 嘶t v m e c h a n l s m b u ta l s oc a i lm e e tt h eb u s i n e s su s e r s d e v e l o p m e n tn e e d si nt h ea g i l e d e v e l o p m e n ta s p e c t a c e 孕l sas e c u r i t yf r a m e w o r kb a s e do ns p r i n ga o pt e c h n o l o g y , i tw o r k s i n d e p e n d e n t l ya g a i n s tb u s i n e s sl o g i co ft h es y s t e ma n dc a np r o v i d es e c u r i t ys e r v i c e s d e p l o y e d a c e g ic a nb ei n t e r g r a d e dw i t hm a s sw e bf r a m e w o r k sp e r f e c t l y s ow ec a n e s t a b l i s ha c e g is e c u r i t ys y s t e mi nt h ee n t e r p r i s es y s t e mb 嬲e do nj 2 e ea n dp r o v i d e a 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 e r v i c e s k e y w o r d s :j 2 e es e c u r i t ym e c h a n i s m ;r o l e b a s e da c c e s sc o n t r o l ;a u m e n t i c a t i o n a 1 1 da u t h o r i z a t i o n ;s p r i n g ;a c e g i c l a s s n 0 :t p 3 1 9 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得的研 究成果,除了文中特别加以标注和致谢之处外,论文中不包含其他人已经发表或 撰写过的研究成果,也不包含为获得北京交通大学或其他教育机构的学位或证书 而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作 了明确的说明并表示了谢意。 学位论文作者签名:写桶签字日期:7 年多月缈日 学位论文版权使用授权书 本学位论文作者完全了解北京交通大学有关保留、使用学位论文的规定。特 授权北京交通大学可以将学位论文的全部或部分内容编入有关数据库进行检索, 提供阅览服务,并采用影印、缩印或扫描等复制手段保存、汇编以供查阅和借阅。 同意学校向国家有关部门或机构送交论文的复印件和磁盘。 ( 保密的学位论文在解密后适用本授权说明) 学位论文作者签名:,罗嘞 签字日期:叼c 7 r 年乡月侈日 导师签名:荐2 乞导师签名:笛2 如 签字日期:以u 7 年月修日 一 致谢 本论文的工作是在我的导师朱卫东教授的悉心指导下完成的,朱卫东教授严 谨的治学态度和科学的工作方法给了我极大的帮助和影响。在此衷心感谢两年来 朱卫东老师对我的关心和指导。 朱卫东教授悉心指导我们完成了实验室的科研工作,在学习上和生活上都给 予了我很大的关心和帮助,在此向朱卫东老师表示衷心的谢意。 朱卫东教授对于我的科研工作和论文都提出了许多的宝贵意见,在此表示衷 心的感谢。 在实验室工作及撰写论文期间,唐建强、孙奇等同学对我论文中的w e b 安全 的研究工作给予了热情帮助,在此向他们表达我的感激之情。 另外也感谢我的家人,他们的理解和支持使我能够在学校专心完成我的学业。 1 绪论 1 1 前言 随着计算机技术和互联网技术的不断发展,基于互联网的企业级应用正逐步 走向成熟。j 2 e e 体系结构已成为企业级应用系统开发的重要平台,为了保证基于 j 2 e e 架构应用系统的安全,s u n 公司、众多厂商以及许多开源社区参与开发了许 多基于j 2 e e 的安全技术,例如:由j 2 s e 扩展而来的j a v a 认证与授权服务j a a s ( j a v aa 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 e r v i c e ) ,为数据传输提供安全保证的j a v a 安全套接字扩展j s s e ( j a v as e c u r i t ys o c k e te x t e n s i o n ) 等。 信息安全己经成为信息化建设的基本要求与重要组成部分,我国也相应提出 了信息化建设安全保障的相关要求。但是,j 2 e e 安全体系结构在实际应用中仍然 存在一定的缺陷,由于其复杂性,不能敏捷地应对客户提交的开发请求。 因此研究如何敏捷地实现企业级应用系统的安全性具有重要意义。 1 2 研究背景及意义 1 2 1企业级应用的安全性需求 企业级应用是指那些为商业组织、大型企业而创建并部署的解决方案及应用。 这些大型企业级应用的结构复杂,涉及的外部资源众多、事务密集、数据量大、 用户数多,有较强的安全性考虑。 发展至今,当代的企业级应用决不可能是单个的独立系统。一个好的企业级 应用体系结构,通常来自优秀的解决方案,同时从应用程序设计的开始就要考虑 其体系结构的合理性、灵活性、健壮性、安全性,从而既能满足企业级应用的复 杂需求也能为今后系统的调整和升级留有余地。这样处理实际上是延长整个应用 的生命周期,增强了用户在多变的商业社会中的适应性,减少了系统维护的开销 和难度,从而给用户带来最大的利益【1 1 。 企业级系统的网络体系中,服务器、客户机拥有不同的地位与作用,这就要 求能够根据受保护机的不同要求来制定相应的安全措施,而企业网络的复杂性又 决定了部署方式的多样性。因此,企业级安全管理措施要能够具备多种部署方案。 从系统级实现的角度来考虑,大多数的企业级应用具有四个基本安全需求。 首先,他们要能够认证一个访问者;其次,他们需要有能力对w e b 请求提供安全 保证;第三,企业级应用需要有能力对服务层方法提供安全保证;最后,企业级 应用经常要有能力对域对象实例提供安全保护【2 】。 j 2 e e 平台对一些常用的安全机制给与了不同程度的支持,这包括:认证授权, 访问控制,数据的机密性、完整性和不可否认性。然而这些安全机制在实际应用 过程中是稍显复杂的,对于敏捷的满足客户提交的开发请求方面存在一定程度的 缺陷。 基于j 2 e e 框架体系的a c e g i 安全系统提供了一个通用的安全性框架,可以满 足上述四个通过的企业级应用的安全需求,并且可以很方便地把安全性应用与企 业的业务逻辑分开。而且,a c e g i 安全框架以其便携性完全能敏捷的满足客户提交 的开发请求。 1 2 2 培训管理系统的设计与开发 培训管理系统( 以下简称培训系统) 是针对现代培训管理的基本需求,和现 代培训管理软件的发展特点、要求,根据北京交通大学远程教育学院的需求,在 充分利用远程教育学院现有技术条件和资源的基础上对现有培训资源进行整合 ( 达到各种资源的充分利用) ,建立完善的培训管理体系、提供信息自动化管理平 台的项目思路。通过该系统的使用,达到为培训流程提供很好的便利条件,不仅 可以对学院的培训活动进行合理的组织和管理,还可以在先进的教育教学理念指 导下,基于高效、优质的资源库系统,提供对培训中学习过程、学习活动的支持, 实现随时、随地的同步或异步学习,提高培训的效率、效果、效益的目的。 该系统完全基于w e b 应用,其设计开发采用目前流行的m v c 框架s p r i n g f r a m e w o r k ,使用s p r i n g 技术,使得系统的体系架构具有更加强的一致性、可测试 性和松耦合度;该系统的系统代码全部放于服务器上,客户端只实现极少部分的 事务逻辑,通过b s ( b r o w s e r s e r v e r ) 多层结构以及i n t c m e t i n t r a n e t 模式下数据 库应用,相对易于把握、成本也较低。它是一次性到位的开发,具有集中化管理 和维护,客户端的免安装和零维护的特点,它能有效地保护数据库和管理访问权 限,从而保证服务器和数据库的安全。 2 1 3 研究目标及我的工作 1 3 1 研究目标 本课题的研究是基于上面介绍的培训管理系统的开发进行的。我参与了本平 台的总体设计,并重点负责实现培训系统的访问控制模块,即为该系统提供安全 保障。 本课题的研究目标是: 1 分析平台的整体需求,对系统的业务逻辑进行模块化分类,构建易于维护、 扩展方便、安全的系统。 2 对系统作安全性研究,为系统构建一个独立于系统业务逻辑、易于扩展的 基于角色访问控制的安全框架。 3 深入研究a c e g i 安全框架的工作原理,发现并改进框架存在的不足之处。 1 3 2 我的工作 本人所做的工作可以总结如下: ( 1 ) 对现有的j 2 e e 安全机制进行分析和研究。 ( 2 ) 研究了基于角色的访问控制( r b a c ) 理论以及a c e g i 组件对r b a c 的 实现,重点研究了a c e g i 为w e b 系统提供的认证支持、资源授权的原理及过程。 ( 3 ) 将a c e g i 安全框架应用于培训管理系统,为系统提供基于角色访问控制 的安全模块,使培训管理系统实现企业级安全性。 ( 4 ) 对a c e g i 框架的不足之处及相关问题做进一步的研究和改进。 1 4 论文的组织结构 本文共分为六个章节,具体结构为: 第一章绪论 介绍本课题的研究背景和意义,本文的研究目标和组织结构。 第二章j 2 e e 安全机制研究 从认证与授权、数据存储安全、数据传输安全三个方面,对j 2 e e 的安全机制 j a a s 、j c a j c e 以及j s s e 进行研究分析。并在研究分析的基础上指出这些安全机 制在企业级应用中的缺陷。 第三章基于s p r i n g 的a c e g i 安全框架 介绍s p 血g 框架,对基于角色访问控制理论进行分析和介绍,并对a c e g i 安全 框架的认证和授权机制进行研究。 第四章a c e 西在培训管理系统中的应用与实现 介绍将a c e 西安全框架成功应用于培训管理系统,为该系统提供基于角色访问 控制的控制模块,实现培训管理系统的安全访问。 第五章对a c e 西存在的改进 在对a c e 西安全框架的研究与应用之后,指出框架存在的不足之处,并做相应 的改进。 第六章总结 对研究内容以及论文工作进行总结,并对后续工作提出建议,对安全策略分 析的下一步工作进行展望。 4 2j 2 e e 安全机制研究 j 2 e e 体系为企业级应用提供十分完整的架构模型,它通过各容器( c o n t a i n e r ) 的协同工作,可以方便地整合系统的多个组件,而每个组件单独负责系统的部分 功能构成系统的层次机构。因此针对j 2 e e 体系结构的不同层次,j 2 e e 也提供了 基于这些层次的健全的安全机制,这其中包含j a v a 认证与授权服务( j a a s j a v a a 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 e r v i c e ) 、数据存储安全、为数据传输提供安全保 证的j a v a 安全套接字扩展( j s s e ,j a v as e c u r i t ys o c k e te x t e n s i o n ) 。 2 1j 2 e e 概念及发展 企业应用系统的开发一直面临着重大挑战:一方面,企业应用系统面对的是 一个异构的分布式环境,它必须支持与己有系统的集成性和与其他系统的互操作 性;另一方面,作为为客户、合作伙伴和企业内部提供信息服务的平台,企业系 统还必须具有高可用性、安全性、可靠性和可伸缩性。这些要求再加上复杂多变 的用户需求和不断伸缩的交付时间,使得企业系统的开发越来越困难。开发商和 广大程序员一直在努力推动和殷切期待一个成熟、标准的企业平台来简化和规范 企业系统的开发和部署。j a v a 技术的出现,尤其是j 2 e e ( j a v a2p l a t f o r n le n t e r p r i s e e d i t i o n ) 平台的推出正是这种努力的结果,也使得企业系统的开发由此变得更加快 速和方便。需要指出的是,j 2 e e 本身是一个标准,它为不同厂商创建平台产品提 供了标准,使不同j 2 e e 平台产品之间的交互成为可能。 j 2 e e ( j a v a2p l a t f o r me n t e r p r i s ee d i t i o n ) 是s u n 公司定义的一个开放式企 业级应用规范。它提供了一个多层次的分布式应用模型和一系列开发技术规范。 多层次分布式应用模型时根据功能把应用逻辑分成多个层次,每个层次支持相应 的服务器和组件,组件在分布式服务器的组件容器中运行,容器间通过相关的协 议进行通讯,实现组件间的相互调用【3 1 。遵从这个规范的开发者将得到行业的广泛 支持,使企业级应用的开发变得简单、快速。 同时,j 2 e e 体系结构提供中间层集成框架用来满足无需太多费用而又需要高 可用性、高可靠性以及可扩展性的应用的需求。通过提供统一的开发平台,j 2 e e 降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成的强有力的 支持,完全支持e j b ( e n t e r p r i s ej a v a b e a n s ) ,有良好的向导支持打包和部署应用, 添加目录支持,增强了安全机制,提高了性能【4 】。 5 2 2j 2 e e 体系结构 臣j 曰臣 口臣j 表现层 业务逻辑层 持久层 数据层 图2 1j 2 e e 体系结构 f i g u r e2 - 1t h ea r c h i t e c t u r eo fj 2 e e 如图2 1 所示,j 2 e e 的多层系统架构分为数据层、持久层、业务逻辑层、表 现层。j 2 e e 将组成一个完整企业级应用的不同层次分别纳入不同的容器( c o n t a i n e r ) 中,每个容器中都包含若干组件( 这些组件是需要部署在相应容器中的) ,同时各 种组件都能使用各种j 2 e es e r v i c e a p i 。j 2 e e 容器包括: 1 ) w e b 容器:服务器端容器,包括两种组件j s p 和s e r v l e t ,j s p 和s e r v l e t 都是w e b 服务器的功能扩展,接受w e b 请求,返回动态的w e b 页面。w e b 容器中 的组件可使用e j b 容器中的组件完成复杂的商务逻辑。 2 ) e j b 容器:服务器端容器,包含的组件为e j b ( e n t e r p r i s e a v a b e a n s ) ,它是 j 2 e e 的核心之一,主要用于服务器端的商业逻辑的实现。e j b 规范定义了一个开 发和部署分布式商业逻辑的框架,以简化企业级应用的开发,使其较容易地具备 可伸缩性、可移植性、分布式事务处理、多用户和安全性等。 3 ) a p p l e t 容器:客户端容器,包含的组件为a p p l e t 。a p p l e t 是嵌在浏览器中的 一种轻量级客户端,一般而言,仅当使用w 曲页面无法充分地表现数据或应用界 面的时候,才使用它。a p p l e t 是一种替代w e b 页面的手段,我们仅能够使用j 2 s e 开发a p p l e t ,a p p l e t 无法使用j 2 e e 的各种s e r v i c e 和a p i ,这是为了安全性的考虑。 4 ) a p p l i c a t i o n c l i e n t 容器:客户端容器,包含的组件为a p p l i c a t i o nc l i e n t 。 a p p l i c a t i o n c l i e n t 相对a p p l e t 而言是一种较重量级的客户端,它能够使用j 2 e e 的 6 大多数s e r v i c e 和a p i 。 通过这四个容器,j 2 e e 能够灵活地实现企业级应用的架构。 2 3j 2 e e 安全机制 j 2 e e 提供了j a v a 认证与授权服务( j a a s ,j a v aa 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 n s e r v i c e ) 、数据存储安全以及为数据传输提供安全保证的j a v a 安全套接字扩展 ( j s s e ,j a v as e c u r i t ys o c k e te x t e n s i o n ) 三个a p i 来实现系统的安全性。 接下来,我们分别来研究一下这三个安全机制。 2 3 1 j a v a 认证和授权服务( j a a s ) j a a s 提供基于代码运行者的访问控制,是j a v a 安全模型的一个重要补充。 j a a s 是标准的可插拔认证模块p a m 结构的j a v a 实现,它对j a v a 2 平台的认证与授权 框架进行了扩展以支持基于用户的认证和访问控制【5 】。j a a s 的出现反映了j a v a 安 全模型的演变,它通过对运行程序的用户进行认证和授权,要求用户拥有相应的 权限才能执行受控应用程序,从而达到保护系统的目的。 j a a s 主要由认证和授权两大部分构成。不管j a v a 代码是作为a p p l i c a t i o n , a p p l e t ,j a v a b e a n 还是s e r v l e t 运行,j a a s 认证部分都能提供安全可靠的方法,决定 谁可以执行哪些j a v a 代码。j a a s 授权部分是对以前j a v a 2 安全框架的补充,它可以 限制某些j a v a 代码执行敏感任务。这种限制除了取决于和j a v a 2 安全框架相似的代 码源外,还取决于被认证者。 ( - - ) j a a s 的认证 j a a s 认证通过可插件形式工作,使j a v a 应用程序独立于底层的认证技术,应 用程序可以使用新的或经过修改的认证技术而不需要修改应用程序本身( 如图2 2 所示) 。应用程序通过实例化一个登录上下文对象开始认证过程,这个对象根据 登录配置文件的协定决定采用哪个登录模块,登录模块决定了认证技术和登录方 式,并且系统中可同时存在多个登录模块。 7 、 l 应用程序 j il o g i n c o n t e x t 登录配置文件 图2 - 2j a a s 认证体系结构 f i g u r e2 - 2t h ea r c h i t e c t u r eo fj a a s j a a s 认证相关的主要组件有:登录上下文,登录模块,回调处理器。 1 登录上下文 j a a s 中的登录上下文( l o g i n c o n t e x t ) 和登录模块( l o g i n m o d u l e ) 是p a m 框架的 j a v a 实现。登录上下文根据登录配置文件的协定决定采用哪些登录模块执行认证, 登录模块以插件的形式服务于应用程序的底层,认证机制的改变对应用程序是透 明的。 2 登录模块 l o g i n c o n t e x t 对象通过l o g i n m o d u l e 接口操作登录模块,加载登录模块配置文 件中指定的登录模块,创建登录模块对象。针对不同的认证机制,登录模块可能 存在不同的具体实现,如t o m s u n s e c u r i t y a u t h m o d u l e 包提供n t l o g i n m o d u l e 、 k e y s t o r e l o g i n m o d u l e 、k r b 5 l o g i n m o d u l e 、u n i x l o g i n m o d u l e 和j n d i l o g i n m o d u l e 登录模块等。 3 回调处理器 j a a s 架构中的c a l l b a c k 是用户登录凭证在应用程序和l o g i n m o d u l e 之间的载 体。c a l l b a c k 的属性包含登录凭证,回调处理器( c a l l b a c k h a n d l e r ) 实现了c a l l b a c k 信息传递,即将用户登录凭证传递到登录模块。 使用j a a s 认证一个用户的典型执行流程如下: 1 ) 应用程序实例化一个具体的回调处理器,用来创建和初始化一个登录上下 文( l o g i n c o n t e x t ) 对象实例。 2 ) 应用程序通过调用l o g i n c o n t e x t 对象的l o g i n 0 方法来完成登录。它会根据 登录配置文件的协定,选择加载相应的登录模块( l o g i n m o d u l e ) ,并委托登录模块 执行用户身份认证与授权。 3 ) 如果用户通过认证,登录模块把相应的主体( p r i n c i p a l ) 和或证书( c r e d e n t i a l s ) 与用户主题( s u b j e c t ) 相关联;如果用户认证失败,则抛出l o g i n e x c e p t i o n 异常。 执行登录模块的a b o r t o 方法。 4 ) 应用程序使用l o g i n c o n t e x t 的l o g o u t 0 方法注销用户登录信息。 ( 二) j a a s 的授权 用户顺利通过认证之后,访问控制器可以根据认证的主题信息对资源进行访 问控制。j a a s 授权与认证过程与j a v a2 安全模型使用的方法相似。事实上,j a a s 授权扩展了j a v a 2 安全模型,包括基于主题( s u b j e c t ) 请求访问的访问控制决策逻 辑。 安全策略文件中定义了保护域与授予它的权限之间的映射。j a a s 通过使用一 组主体概念进一步描述了保护域并强化了这种映射。使用保护域的权限检查是否 应当授予已认证用户某个操作权限,那么主题中包含的、与运行这段代码的用户 相对应的主体必须与保护域中包含的主体匹配。抽象类i a v a x s e c u r i t y p o f i c y 包装 了j a a s 主题授权期间使用的安全策略。默认实现类在文本文件中读取安全策略信 息,类似于一般j a v a2 安全模型使用的j a v a s e c u r i t y p o l i c y 类默认实现方法。 当应用程序为通过认证的用户建立主题后,j a a s 将此用户执行的每一个操作 都包装为p r i v i l e g e a c t i o n ,由静态方法s u b j e c t d o a s o 和s u b j e c t d o a s p r i v i l e g e d 0 执 行特定主题的授权操作。调用s u b j e c t d o a s 0 和s u b j e c t d o a s p r i v i l e g e d o 方法所执行 的访问控制安全策略定义在j a a s 策略文件中。 s u b j e c t 类的d o a s o 方法和d o a s p r i v i l e g e d 0 方法都用来将用户登录身份s u b j e c t 与将要执行的操作相关联,这样可以实现基于用户主题( s u b j e c t ) 的权限检查。 d o a s 0 方法通过a c c e s s c o n t r 0 1 1 e r g e t c o n t e x t 0 方法获取当前执行线程的访问 控制上下文。该访问控制上下文是在程序刚开始执行时自动创建的,包含了 a c c e s s c o n t r o l c o n t e x t 对象创建后到执行到该处所经过的所有代码信息( 包括代码 从策略文件中所获得的权限、代码位置等) 。 d o a s p r i v i l e g e d 0 方法则检测传入的上下文参数是否为n u l l ,若不为n u l l ,则使 用的是参数指定的访问控制上下文。若为n u l l 则使用n e w 操作符创建新的 a c c e s s c o n t r o l c o n t e x t 对象,此时的a c c e s s c o n t r o l c o n t e x t 对象中并不包含以前的代 码信息,只包含该处以后所经过的所有代码信息。 9 ( 三) j a a s 安全机制分析 j a a s 认证结构具有以下特点: ( 1 )认证模块课插拔:即应用程序开发者无需关心应用程序底层所爱用 的认证与授权机制,可在不修改任何应用程序代码的情况下,添加、 删除或修改用户认证模块; ( 2 ) 可多种认证模块并存:j a a s 可以同时提供多种认证模块并存,如: 基于用户名1 3 令、基于数字证书等。根据配置信息依次调用不同的 认证模块; ( 3 )可扩展:j a a s 具有高度的可扩展性,可通过j a a s 实现用户自定 义认证与授权机制; ( 4 )认证模块独立:不同机制的认证模块之间相互独立,由登录上下文 通过配置信息统一管理; ( 5 ) 主题共享:虽然认证模块相对独立,但用户邓丽系统后建立的主题 在认证模块之间共享; ( 6 ) 多角色访问:主题是用户在系统中的代表,主体是用户在系统角色 的代表,主题可以含有多个主体。即用户可以具有多个角色。 j a a s 提供基于角色的授权机制,以主题代表用户,以主体代表角色,允许用 户以多角色访问系统。其权限系统提供了聚集的概念,使用权限集统一管理优化 同类权限,用p e r m i s s i o n s 统一管理优化不同类权限。j a a s 访问控制中提供了用 户有效权限集计算、用户访问控制上下文调用堆栈优化等功能,提高了访问控制 的执行效率。 j 2 e e 沿用j a a s 安全策略定义方式,以x m l 文件形式存储系统安全策略, 由组件提供者和应用程序部署者管理和维护,在应用程序使用中安全策略或机制 很可能随着需求的变化有所不同,依靠j 2 e e 专业人员而非系统工作人员对应用程 序安全策略或机制进行维护。这对于企业应用不够灵活,系统的安全策略在应用 程序配置文件( w e b x m l ) 中由应用程序部署者配置,开发和维护系统时,修改安 全策略都必须重新启动应用程序,这将增加开发人员和维护人员的工作量。对于 信息安全级别要求高的单位或部门来说,这种不灵活的安全策略维护甚至存在安 全问题。对于安全策略的管理与维护需要由j 2 e e 专业人员进行,而其不一定具有 应用系统管理员角色,对于系统安全策略这种高敏感信息,应该严格控制其接触 人群范围,应由了解系统业务规则且级别较高的管理员管理和维护系统安全策略。 1 0 2 3 2 数据存储安全 j 2 e e 中提供数据存储安全保证的安全技术是j c a 和j c e 。j c a 为j a v a 平台提 供基本的用于访问和开发密码服务的框架,包括数字签名、消息摘要等服务。j c a 和j a v a 安全体系结构核心一样,是j a v a 核心安全包的组件。由于美国对加密技术 的出口限制,s u n 公司把j c e 作为j a v a 平台的扩展,j c e 是j c a 的扩展。 ( 一) j c a 及主要功能 j c a 中定义了一组密码服务提供者c s p ( c r y p t o g r a p h i cs e r v i c ep r o v i d e r ) 必须 实现的服务提供者接口( s p i ) ,在此基础上提供完整的平台独立加密a p i 。这组 a p i 主要包括加密服务、证书和密钥管理三个方面。j c a 体系结构如图2 3 所示。 s p i i 图2 3j c a 体系结构 f i g u r e2 - 3t h ea r c h i t e c t u r eo fj c a j c a 主要功能有: 1 ) 保护数据通信与存储的完整性; 2 ) 标示通信双方或存储体中数据的相关主体; 3 ) 提供产生标示数据源的密钥与证书; 4 ) 提供从不同服务提供者插入不同木马算法的框架。 j c a 并不能有效地用于加密通信或存储的数据,数据机密性服务主要由j c e 提供。 ( 二) j c e 及主要功能 j c e 在j c a 的基础上作了扩展,包括加密算法、密钥交换、密钥产生和消息 鉴别服务等接口。j c a j c e 并不执行各种加密算法,它们只是连接应用和实际算 法实现程序的一组接口。软件开发商根据接口,将各种算法实现后,打包成一个 密码服务提供者,可以动态地加到j a v a 运行环境中。作为s u n 密码服务软件的j c e , 包含一个加密、密钥生成、密钥管理和消息认证代码的框架以及s u n 公司提供的 标准实现。j c e 支持对称密钥加密、公开密钥加密、块密码和流密码等,其他经过 认证的密码系统也可以作为密码服务提供者插入j c e 框架,从而使新的密码算法 与j c e 无缝地集成。与j c a 一样,j c e 首先要指定密码服务提供者或动态生成应 用程序所需的新提供者,然后才可以使用密码服务提供者所提供的密码算法【6 】【7 】。 2 3 3j a v a 安全套接字扩展( j s s e ) 有了j a a s ,我们就可以识别访问系统的用户并限制他们只能访问授权使用的 那部分系统。虽然j a a s 是迈向安全w e b 应用程序坚实的第一步,但是如果没有 安全传输,那么应用程序安全性仍然是不完整的。通过网络传输的数据非常容易 被非法用户截获或篡改,当数据含有敏感信息时,如口令、信用卡号码等,必须 采取一些措施确保非法用户无法访问到传输中的敏感信息。j a v a 安全套接字扩展 j s s e ( j a v as e c u t i t ys o c k e te x t e n s i o n ) 是s u n 公司为解决互联网的安全通信问题而 推出的解决方案。j s s e 利用s s l 协议进行安全的网络通信,提供了一个具有完整 功能的安全传输框架j a v a 版s s l 协议的实现【8 1 。 j a v a 安全套接字扩展j s s e 通过实现s s l 协议提供一个具有完整功能的安全传 输框架。开发人员可以在客户端和服务器端之间通过t c p i p 协议安全地传输数据。 这些功能包括数据加密、服务器认证、消息完整性以及可选的客户端认证等。j s s e 是基于密码算法和握手机制之上的合成体,它最大程度地降低了创建敏感但危险 的安全攻击点的风险。进一步地,j s s e 作为模块化服务简化了应用程序开发,开 发者能够直接将j s s e 整合到他们的应用程序中【9 1 。 1 2 2 3 4j 2 e e 安全机制的缺陷 至此,我们介绍了j a a s 、j c a j c e 和j s s e 等这些j 2 e e 自带的a p i 是如何 实现j 2 e e 应用的安全性。但是在以往的开发和使用过程中,我们不难发现这些安 全机制也存在一定的缺陷。具体如下: 1 ) 由于j 2 e e 将企业级应用划分为四个层次,而这四个层次又是分别纳入不同的 容器中。而j 2 e e 的容器都有各自专有的部署描述符,这些部署描述符的数量 是很庞大的。因此开发者就势必要同这些数量庞大的与j 2 e e 容器相关的专有 部署描述符打交道。所以,j 2 e e 应用的便携性很难得到保证。 2 ) 尽管j 2 e e 平台标准化了各种安全性a p i ,但不同j 2 e e 容器的安全性服务及其 o o s 都不一样; 3 ) 直接基于j 2 e e 安全性编程模型开发的j 2 e e 企业级应用系统的测试工作很难展 开。 应该肯定的说,j 2 e e 提供的安全机制非常健壮、优秀,但是如果直接采用 j a a s 、j s s e 等安全机制,开发者会将大量的时间浪费在熟悉各种j 2 e e 容器上, 而且应用的便携性不能够得到保证,而我们需要更敏捷地应对客户提交的开发请 求。所以,我们需要研究并部署不仅安全,而且还要敏捷的j 2 e e 安全框架。 2 4 小结 本章主要介绍了j 2 e e 给开发者提供的安全机制,包括j a v a 认证与授权服务 ( j a a s ) 、数据存储安全以及j a v a 安全套接字扩展( j s s e ) 。j a a s 通过对用户身 份的认证和权限的授予来对系统的访问提供安全性;数据存储安全提供了系统数 据的安全存储;j s s e 为系统提供了数据的安全传输。 尽管j 2 e e 的这三个安全机制已经非常优秀了,但是在开发的过程中,开发者 要与各种j 2 e e 容器打交道,这样就造成了时间的浪费,所以不能更敏捷的满足客 户提出的开发要求。在这种情况下,架构在s p r i n g 基础之上的a c e g i 框架体现了 它的优势。 接下来我们认真研究一下a c e g i 安全框架。 1 3 3 基于s p r i n g 的a c e g i 安全框架 s 研n g 框架是个优秀的多层j 2 e e 系统框架,目的是用于建立“快装式企业应 用 ,它为企业级应用提供了一个非常轻量级的解决方案,大大降低了应用开发的 难度和复杂度,提高了开发效率。而架构在s p r i n g 基础之上的a c e g i 安全框架不 仅可以完全兼容j 2 e e 的安全机制,而且以其方便快捷备受开发者的钟爱。 本章首先对s p r i n g 框架进行一个简单的介绍。由于a c e g i 框架可以实现基于 角色的访问控制( r b a c ) ,所以在这里对r b a c 的相关知识做一个介绍。然后对 a c e g i 安全框架的认证和授权机制进行深入分析和研究。 3 1s p r i n g 框架介绍 s p r i n g 框架是由o p e ns o u r c e 开发的一个优秀的多层j 2 e e 系统框架,它为企 业级应用提供了一个非常轻量级的解决方案。你可以把s p r i n g 当作一个一站式企 业应用,或者一个标准开发组件,根据自己的需要,只取用它的部分组件使用而 无须涉及其他。 s p r i n g 的核心是个实现了i o c ( i n v e r s i o no f c o n t r 0 1 ) 模式的轻量级容器,其目 标是实现一个全方位的整合框架,在此框架下实现多个子框架的组合,而这些子 框架又可以彼此独立,也可以使用其它的框架方案加以替代,s p r i n g 希望提供一站 式的框架整合方案。同时s p r i n g 框架实现对a o p ( a s p e c t - o r i e n t e dp r o g r a m m i n g ) 思想的支持,这大大增加了框架的扩展能力。 3 1 1 控制反转( i o c ) 容器 s p r i n g 框架所提供的众多功能之所以能成为一个整体是建立在控制反转 ( i n v e r to f c o n t r o l ,i o c ) 原理的基础之上。 i o c 是一种设计模式即i o c 模式。在传统的模块实现中,由程序代码直接控制 程序之间的关系。而在i o c 模式中,由容器来控制程序之间的关系。这也就是所 谓“控制反转”的概念所在;控制权由应用程序代码中转到了外部容器,控制权 的转移,即所谓反转。m a r t i n f o w l e r 称这种模式叫做“依赖注入( d e p e n d e n e y i n j e c t i o n ,d 1 ) 0 0 1 。 依赖注入有三种基本方式,分别是: 1 接口注入( i n t e r f a c ei n j e c t i o n ) 1 4 这是一种比较老的注入方法,其核心思想是借助接口来将调用者与实现者分 离。而对于接口注入型的i o c 容器而言,加载接口实现并创建其实例的工作由容 器完成。 2 设值方法注入( s e t t e ri n j e c t i o n ) 这种方法在实际开发中用的最广泛,估计很大一部分受s p r i n g 框架的影响。 这种方法的要点是通过类的s e t t e r 方法完成依赖关系的设置。一般的做法是在 f a c t o r y 类中定义设值方法,该方法接收类型为产品接口的参数,然后通过x m l 文件进行组件的配置。这样就可以动态的加载具体的产品类。 3 构造子注入( c o n s r r u c t o ri n j e c t i o n ) 顾名思义,就是通过类的构造函数参数传递依赖。这种方式的依赖注入由 p i c o c o n t a i n e r 团队在2 0 0 3 年中期发明【l l 】。在此类型的依赖注入机制中,依赖关系 是通过类构造函数建立,容器通过调用类的构造方法,将所需的依赖关系注入其 中。 i o c 模式进一步降低了类之间的耦合改变了传统的对象的创建方法,实现了一 种配置式方式,s p r i n g 框架中由i o c 容器负责配置性的对象的管理。这样极大
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离婚协议范例:财产分割与子女抚养权协议书
- 珠海日式花园施工方案
- 高端科技公司内部员工股权回购与转让协议
- 家用净水器租赁与水质安全风险评估及维护服务协议
- 生态园区物业管理合同续签及可持续发展协议
- 集中供热系统运行评估方案
- 旅游包团合同中的行程安排、费用承担及安全保障
- 浙二护理考试题库及答案
- 离婚协议共同债务分割与子女赡养金支付协议
- 桥梁工程破桩头施工与桥梁结构检测合同范本
- 《数据库系统概论》教案
- 小学学校“十五五”(2026-2030)发展规划
- 2025一建《建设工程项目管理》考前十页纸(完整版)
- 红楼梦第34回课件
- 摩托车整车采购合同范本
- 民事起诉状(人身保险合同纠纷)样式
- GB/T 43355-2023塑料和其他无孔材料表面抗病毒活性的测定
- 内蒙古电网介绍
- 气力输送计算
- 公共关系学授课教案
- 河北省城市集中式饮用水水源保护区划分
评论
0/150
提交评论