(计算机软件与理论专业论文)java2环境jaas研究与实现.pdf_第1页
(计算机软件与理论专业论文)java2环境jaas研究与实现.pdf_第2页
(计算机软件与理论专业论文)java2环境jaas研究与实现.pdf_第3页
(计算机软件与理论专业论文)java2环境jaas研究与实现.pdf_第4页
(计算机软件与理论专业论文)java2环境jaas研究与实现.pdf_第5页
已阅读5页,还剩69页未读 继续免费阅读

(计算机软件与理论专业论文)java2环境jaas研究与实现.pdf.pdf 免费下载

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

文档简介

j a v a 2 环境j a a s 研究与实现 摘要 j a a s ,即j a v a 认证与授权服务,是s u n 公司为了进一步增强j a v a 2 安全框架 的功能而提供的编程接1 :3 ,目的是提供基于用户的、以用户为中心的访问控制能 力,j a a s 是以用户为中心的授权体系结构;而原来的j a v a 2 安全框架提供的是以 代码为中心的访问控制方式,即基于代码从哪里来,谁签署了代码。 本文设计和实现了j a a s 服务,j a a s 服务作为以用户为中心的授权模型, 主要由x m l 登录模块、关系数据库登录模块、身份接口模块、回调处理模块、 权限管理模块、策略模块、认证和授权工具模块这七个纯j a v a 实现的模块组成。 本文首先介绍了课题的研究背景,并在j a a s 规范的基础之上,研究j a a s 了基本组成的相关概念以及j a a s 的实现原理及认证和授权的处理过程,并以此 为基础,提出了对j a a s 各组成部分的设计思想,并以此设计思想作为指导,实 现了基于x m l 登录和授权策略和基于关系数据库登录和授权策略的j a a s 系统。 最后,作者从四川省自学考试业务管理信息系统为项目背景对安全性需 求出发,给出了基于j a a s 的w e b 应用的系统原型,实现了对页面一级和页面 元素的授权访问,并给出了相应的测试及结果分析,对已经建立的j a a s 进行了 有效的验证,也为j a a s 的更广泛应用建立了良好的基础。 关键词j a a s ;j a v a 安全性;认证;授权 j a v a 2 环境j a a s 研究与实现 a b s t r a c t 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 ) ,i sas e to fa p i sb ys u n c o r p o r a t i o n t oe x t e n dt h ee x i s t i n gj a v a s e c u r i t ya r c h i t e c t u r et h a tu s e sas e c u r i t yp o l i c y t o s p e c i f yw h a ta c c e s sf i g h t sa r eg r a n t e dt oe x e c u t i n gc o d e t h a ta r c h i t e c t u r e ,a s i n t r o d u c e di nt h ej a v a2p l a t f o r m ,w a sc o d e - c e n t r i c t h a ti s ,t h ep e r m i s s i o n sw e r e g r a n t e db a s e do nc o d ec h a r a c t e r i s t i c s :w h e r et h ec o d ew a sc o m i n gf r o ma n dw h e t h e r i tw a s d i g i t a l l ys i g n e da n d i fs ob yw h o m w h i l ej a a s p r o v i d e sa c c e s sc o n t r o lb a s e d n o t j u s t o nw h a tc o d ei sr u _ r m i n g , b u ta l s oo nw h oi sr u n n i n gi t i t su s e r - c e n t r i c , t h em a i ng o a lo ft h i s p r o j e c t i st o d e s i g na n di m p l e m e n tj a a si nj a v a2 e n v i r o n m e n t j a a s ,a s au s c r - c c n t r i cj a v a s e c u r i t ya r c h i t e c t u r e ,i sc o m p o s e d o fs e v e n p a r t so fp u r ej a v ai m p l e m e n t a t i o no fx m l - l o g i nm o d u l e ,r d b m s l o g i nm o d u l e , p r i n c i p a lm o d u l e ,c a l l b a c kh a n d l e rm o d u l e ,p e r m i s s i o nm a n a g e rm o d u l e ,p o l i c y m o d u l ea n da u t h e n t i c a t i o n - a u t h o r i z a t i o n u t i l i t ym o d u l e f i r s t l y , t h er e s e a r c hb a c k g r o u n do f t h ep r o j e c t i si n t r o d u c e di nt h i st h e s i s a n dt h eb a s i cc o n c e p t sa b o u tj a a sc o m p o n e n t sa n dp r o c e s so fh o wt oa u t h e n t i c a t e a n da u t h o r i z ei nj a a sa r ea l s os t u d i e d b a s e do nt h e s e ,t h ei d e a so nh o wt od e s i g n j a a si sc o m eu pw i m j a a sw i t l lx m l b a s e da n dr d b m s - b a s e dp o l i c yi s i m p l e m e n t e da c c o r d i n g t ot h ed e s i g n p l a n a tl a s t w ec o m eu p 诚t l law e b a p p l i c a t i o np r o t o t y p es y s t e mb a s e do nj a a s t o s a t i s f yt h er e q u i r e m e n t so fp r o j e c t - o p e r a t i n gi n f o r m a t i o ns y s t e mo f s e l f - e d u c a t i o n o f f i c eo fs i c h u a np r o v i n c e ,w h i c hi m p l e m e n t st h ea u t h o r i z e da c c e s st ow e b p a g ea n d i n t e r n a l - e l e m e n to fw e b p a g e t e s t sa n da n a l y s i so nt h ep r o t o t y p es y s t e ms h o w t h a t t h ej a a s i m p l e m e n t e dr e a l l yw o r k sf m e ,a n dh a ss e tu p a g o o de x a m p l e f o rm o r ea n d m o r ea p p l i c a t i o n st ou s ej a a s k e yw o r d sj a a s ;j a v as e c u r i t y ;a u t h e n t i c a t i o n ;a u t h o r i z a t i o n - l i - j a v a 2 环境j a a s 研究与实现 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的 研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含 其他人已经发表或撰写过的研究成果,也不包含为获得电子科技大学或其它教 育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任 何贡献均已在论文中作了明确的说明并表示谢意。 签名:匦盈望日期:矽叶年i 月2 。日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:隧盈! 显 导师签名: 日期:7 ,吖 j a v a 2 环境j a a s 研究与实现 1 1 课题背景 第一章绪论 随着j a v a 2 平台的应用越来越广泛,尤其是j 2 e e 在企业级系统和电子商务 系统中的大量应用,人们对j a v a 平台的安全性也越来越关注。安全性逐渐成为 人们选择信息化解决方案的一个关键因素。随着计算机( 尤其是因特网) 技术的 发展,安全性攻击正变得越来越成熟和频繁。要保证j a v a 平台的安全性,应用 认证技术( 如身份验证和授权) 就是其中一个重要的关键。身份认证和授权是安 全中的一个很重要的部分,很多系统包括操作系统、应用系统等都离不开身份认 证和授权。其中一个典型的例子就是l i n u x 操作系统对多用户的管理。在r e d h a t l i n u x 用户的基本信息包含在e t c p a s s w d 中,包括用户i d 、用户口令和组i d 等, 并且系统每个目录和文件都被设置了访问权限信息,用户登录l i n u x 必须输入正 确的用户名和口令,才能对指定的系统资源( 即授权访问的资源) 进行访问。这 一过程就包括了身份认证和授权。 j a v a 认证与授权服务( j a a s ) 正是顺应这种安全性的要求而产生的,它为 j a v a 平台提供了基于代码运行者的访问控制能力,从而进一步保证了j a v a 平台 的安全性,目前已经纳入j 2 s d k1 4 正式成为标准的安全性模块。 1 2 课题研究的内容和意义 本课题着重探讨了j a a s 所涉及的各个方面,并对它在模型理论、实现方式 等多方面进行了探讨和实践。主要内容包括: 1 ) j a a s 的内容和框架讨论; 2 ) j a a s 的内部处理过程: 3 ) 对现有典型的j a a s 产品讨论和经验汲取; 4 ) 作者运用对j 2 e e 和x m l 及数据库理论的掌握,通过对几种开源项目的总结 和综合,提出了基于j a a s 的w 曲应用的设计方案。按照上述的设计方案实 现了一套基本完整的原型系统。 本课题研究的意义在于,随着j 2 e e 企业级应用和电子商务应用越来越普及, 其安全性问题越来越突出,通过对j a a s 的研究和应用可以有效的解决这些安全 性问题;而现在国内相关的研究仍比较缺乏,所以也有必要进行本课题研究,为 j a v a 2 环境j a a s 研究与实现 我国国民经济的相关领域的发展作出应有的贡献。 1 3 课题来源和作者的主要工作 本课题为教研室自拟,以四川省自学考试业务管理信息系统作为项目背 景,旨在跟踪国内外j a a s 技术的发展动态,了解和掌握j a a s 理系统的理论、 思想和技术,并实现一个自主开发、有一定实用价值的基于j a a s 的w e b 应用 的原型系统。 从2 0 0 4 年1 月进入课题开始,作者以“j a v a 2 环境j a a s 研究与实现”为题, 开始进行硕士论文准备工作。在导师的悉心指导下,确定了课题研究的主要内容, 在课题研究这段时间里,作者完成了以下工作: 阅读并分析了大量有关j a a s 技术的资料及相关学术论文,对j a a s 技 术的概念、特点进行详细的讨论和分析; 总结归纳了若干开源的j a a s 项目,吸取了不同项目在平台搭建、采用 理论套路和底层实现技术等方面的经验,基于对四川省自考办业务管 理系统项目的业务要求,确立了系统的技术框架和实现思路; 运用掌握的j a a s 系统的理论和实现机制,分别设计和实现了基于x m l 策略和基于关系数据库策略的j a a s 的w e b 应用的原型系统; 着重解决了j a a s 的可插拔性,以及其在w e b 应用实现的可扩展性。 1 4 本文的章节安排 本论文内容安排如下: 第一章,绪论。主要介绍课题的来源、背景以及作者的主要工作。 第二章,j a a s 理论研究和相关实现技术研究。主要介绍j a a s 的相关概念, 了解j a a s 的组成和目标,并研究了j a a s 的实现原理和其内部流程,同时研究 熟悉相关实现的关键技术,如x m l 处理技术,h i b e r n a t e 技术及m v c 模式等, 为进行后继的j a a s 的服务设计和实现打好基础。 第三章,j a a s 服务设计。主要讨论了为实现j a a s 服务所必需的接口,进 行相关的设计。 第四章,j a a s 服务实现。主要讨论了如何根据j a a s 服务所需的接口,给 出的具体的实现。 第五章,基于j a a s 的w e b 应用框架原型的设计与实现。主要讨论如何在 已实现的j a a s 系统之上,建立w e b 应用框架原型,使其满足w e b 应用的安全 j a v a 2 环境j a a s 研究与实现 性需求,并给出具体的设计和实现方案。 第六章,系统测试和课题总结。在已建立的基于j a a s 的w e b 应用框架原 型系统的基础之上进行相关的测试,根据测试结果进行分析。同时对此系统的特 点进行总结,指出其不足,阐述其进一步的研究方向。 j a v a 2 环境j a a s 研究与实现 第二章j a a s 理论研究和相关实现技术研究 2 1 j a a s 介绍 j a a s ,即j a v a 认证与授权服务,是s u n 公司为了进一步增强j a v a 2 安全框 架的功能而提供的编程接口,目的是提供基于用户的访问控制能力,是以用户为 中心的授权体系结构:而原来的j a v a 2 安全框架提供的是基于代码源的访问控制 方式,即基于代码从哪里来,谁签署了代码。因此,j a a s 是j a v a 安全编程的一 个重要补充。 8 1 认证就是校验一个用户拥有使用已经被企业用户注册机构证明了的身份鉴 定的权限的处理过程。j a a s 的认证机制建立于一整套可插拔的模块基础上, j a a s 允许不同的验证模型在运行时可被插拔,客户应用总是通过登入上下文对 象和j a a s 交互。【1 2 】 授权是决定认证的用户是否可以执行一些动作的工作,例如访问一处资源。 因为j a a s 建立于已经存在的j a v a 安全模型的基础上,故这个过程是基于策略 的。策略配置文件实质上包含了一系列的入口,诸如“k e y s t o r e ”和或“g r a n t ”。 g r a n t 入口包含了所有的权限,它是通过认证的代码或者法则被授予可以进行安 全敏感的操作,例如,访问一个具体的w e b 页面或者本地的文件。j a a s 的基于 p r i n c i p a l 的安全政策。其中每个p r i n c i p a l 对象表示同一个用户的不同“身份”。 一个基于代码运行者的授权示例如下: g r a n tc o d e b a s e “h t t p :w w w a b c c o m ”,s i g n e d b y “a b c ”,p r i n c i p a l m y p r i n c i p a l l m p l “t o r n ” p e r m i s s i o n j a v a i o f i l e p e r m i s s i o n “c d r o r n t o m ”“r e a d ” 上面的这条配置条目赋予了从w w w a b c c o r n 来的由a b c 签名的并且由t o m 运行的代码对“c d r o m t o m ”目录下的文件读的权限。 2 2j a a s 的组成和目标 j a a s 主要由三部分组件组成:公共类( c o m m o n ) ,认证类( a u t h e n t i c a t i o n ) , 授权类( a u t h o r i z a t i o n ) 。其中公共类由s u b j e c t ,p r i n c i p a l ,c r e d e n t i a l 三个类组成 j a v a 2 环境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 ,c a l l b a c k h a n d l e r 和c a l l b a c k 四个类: 授权类包括p o l i c y ,a u t h p e r m i s s i o n 和p r i v a t e c r e d e n t i a l p e r m i s s i o n 三个类i s 。下 面将对以上各个类作简单介绍。 1 ) 公共类 s u b j e c t 主题类,是整个j a a s 的核心。s u b j e c t 是一种j a v a 对象,它表示单 个实体,如一个用户或一项服务。一个s u b j e c t 可以有许多个相关身份,每 个身份都由一个p r i n c i p a l 对象表示。一个s u b j e c t 还可以包含两组凭证,公 有凭证和私有凭证,用c r e d e n t i a l 表示。 p r i n c i p a l 身份类,p r i n c i p a l 对象表示一种身份,并且不是持久的。所以每次使用 者登录时都必须将它们新增到s u b j e c t 。p r i n c i p a l 作为成功认证过程的一部 分被新增到s u b j e c t 。同样,如果认证失败,则从s u b j e c t 中除去p r i n c i p a l 。 不管认证成功与否,当应用程序执行注销时,将除去所有p r i n c i p a l 。 c r e d e n t i a l 凭证类,c r e d e n t i a l 表示一种凭证,分为公有凭证和私有凭证,用来将 一些除了p r i n c i p a l 之外的安全相关的属性和s u b j e c t 联系起来,如密码,公 钥证书等。凭证可以用各种j a v a 类表示。 2 ) 认证类 l o g i n c o n t e x t 登录上下文类,l o g i n c o n t e x t 使用一个配置文件来确定使用哪个 l o g i n m o d u l e 对用户进行认证。这个配置可以通过系统属性 j a v a s e c u r i t y a u t h 。l o g i n c o n f i g 指定。 l o g i n m o d u l e 登录模块类,开发人员通过实现不同l o g i n m o d u l e 类来实现不同的认证 技术的功能,这些认证技术可以插在应用程序的下面,因为j a a s 登录结构 体系是可扩展的,所以你只要在配置文件中指定使用哪个l o g i n m o d u l e 模块 就可以几乎全部插入任何l o g i n m o d u l e 模块。如基于x m l 文件的 l o g i n m o d u l e ,基于关系数据库的l o g i n m o d u l e 等。 c a l l b a c k h a n d l e r 回调处理类,c a l l b a c k h a n d l e r 类被l o g i n m o d u l e 类用来和用户通信如用 j a v a 2 环境j a a s 研究与实现 户名、密码等以便于取得认证信息。c a l l b a c k h a n d l e r 类处理三种类型的回调 ( c a l l b a c k ) :n a m e c a l l b a e k ,提示用户输入一个用户名:p a s s w o r d c a l l c a c k , 提示输入密码;t e x t o u t p u t c a l l b a c k ,报告错误、警告或者发送给用户一些其 它信息。 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 ,其中n a m e c a l l b a c k 保存用户名,p a s s w o r d c a l l c a c k 保存密码, t e x t o u t p u t c a l l b a c k 保存错误警告等信息。 3 1 授权类 p o l i c y 策略类,p o l i c y 被用于表示应用程序的安全性策略。缺省的实现由 $ 1 1 1 1 s e c u r i t y p r o v i d e r p o l i c y f i l e 提供,在s u n s e c u r i t y p r o v i d e r p o l i c y f i l e 中, 策略被定义在一个文件中,可通过修改j a v a s e c u r i t y 来实现自定义的p o l i c y 。 a u t h p e r m i s s i o n 授权权限类,这个类是p e r m i s s i o n 类的子类,并封装了j a a s 所要求的 基本权限。一个a u t h p e r m i s s i o n 类包含一个名字( 也称为目标名) ,但它没有 行为列表。a u t h p e r m i s s i o n 类的对象用于保护对p o l i c y 、s u b j e c t 、l o g i n c o m e x t 和c o n f i g u r a t i o n 对象的访问。 p r i v a t e c r e d e n t i a l p e r m i s s i o n 私有凭证权限类,这个类是p e r m i s s i o n 类的子类,并封装了j a a s 所要 求的基本权限,用来保护对属于某个s u b j e c t 的私有凭证p r i v a t e c r e d e n t i a l 的访问。 2 3j a a s 实现原理 j a a s 的处理过程包括两部分,即认证过程和授权过程。下面将对认证过程 和授权过程分别进行阐述。 2 3 1 认证过程 认证处理过程要经过下面的典型步骤: 1 、生成一个l o g i n c o n t e x t 对象。这个l o g i n c o n t e x t 寻找配置文件以决定使 用哪个l o g i n m o d u l e 。同样,可选择的,有可能传递一个c a l l b a c k h a n d l e r j a v a 2 环境j a a s 研究与实现 给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 方法执行认证,它会加载预定义的 l o g i n m o d u l e 去检验用户是否可以被认证; 3 、如果用户被认证,那么用规则和标识和其所属主题( s u b j e c t ) 进行关联; 4 、或者在登录失败的情况下抛出一个l o g i n e x c e p t i o n 异常; 5 、使用l o g i n c o n t e x t 的l o g o u t 方法进行注销登录。 在j a a s 中,登录是一个两阶段( t w o - p h a s e ) 的处理过程。第一阶段是“登录 ( 1 0 9 i n ) ”阶段( 就像上面2 所描述的) 。这个阶段唯一的任务是认证。只要处理 过程成功通过这个阶段,认证处理过程就进入了“提交( c o m m i t ) ”阶段( 如上步 骤3 ) ,这一阶段l o g i n m o d u l e 的c o m m i t 方法被调用去关联所属主题( s u b j e c t ) 相关的规则和标识。b 2 在j a a s 中一个所属主题( s u b j e c t ) 表示一个认证实体,比如一个人或者一 台设备。它包含了一整套法则和安全相关的属性诸如密码和加密密钥。在j a a s 体系结构中,所属主题( s u b j e c t ) 和其所附属的相关权限,在认证过程当中扮演 了重要的角色。所有的认证模块当中,l o g i n m o d u l e 是事实上的认证机制的接口。 虽然l o g i n m o d u l e 没有得到直接调用客户应用的机会,但是它经由一个可插拔的 模块提供了一个认证的具体类型,其实现了认证的算法并且决定实际的认证过程 是怎样被执行的。 s u n 提供了几个默认的l o g i n m o d u l e 实现,在s r u c o m s e c u r i t y a u t h m o d u l e 包里有诸如j n d i l o g i n m o d u l e ,k r b 2 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 和 n t l o g i n m o d u l e 等几个l o g i n m o d u l e 实现。因为j a a s 登录结构体系是可扩展的, 所以你只要在配置文件中指定使用哪个l o g i n m o d u l e 模块就可以几乎全部插入 任何l o g i n m o d u l e 模块。 如下为一个配置文件的例子: m y s a m p l e c o r n s a m p l e m o d u l e m y l o g i n m o d u l er e q u i r e dd e b u g - - t r u e ; ) ; 这里m y s a m p l e 是登录上下文环境( 1 0 9 i nc o n t e x t ) 的名字,当你生成一个新的 l o g i n c o n t e x t 开始认证过程时它会被传入l o g i n c o n t e x 的构造函数中。依据配置 块提示,那个文本块提醒j a a s 有关l o g i n m o d u l e 在登录过程中应该被用来执行 认证。另外,对于l o g i n m o d u l e ,任何关于它的选项也可以在这里被指定。在执 j a v a 2 环境j a a s 研究与实现 行登录这一步骤的过程中,c a l l b a c k h a n d e r 类被l o g i n m o d 谢e 类用来和用户通信 以便于取得认证信息。c a l l b a e k h a n d l e r 类处理三种类型的回调( c a l l b a c k ) : n a m e c a l l b a e k ,提示用户输入一个用户名;p a s s w o r d c a l l c a e k ,提示输入密码; t e x t o u t p u t c a l l b a c k ,报告错误、警告或则发送一些其它信息给用户。 2 3 2 授权过程 授权处理过程要经过下面的典型步骤: 1 、只要用户被认证,授权经由s u b j e c t d o a s 方法发生,或者从s u b j e c t 类的 静态方法d o a s p r i v i l e g e d ; 2 、d o a s 方法用当前的a c c e s s c o n t r o l c o n t e x t 动态和主题( s u b j e c t ) 关联起来, 并且同时调用r u n 方法去执行动作,它导致安全验证; 3 、根据安全验证结果,决定用户能否访问指定的资源。【1 2 】 在内部,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 ( ) 方法进行安全验证的步骤如下: 1 创建一个中间的a c c e s s c o n t r o l c o m e x t ,它指向传递的 a c c e s s c o n t r o l c o n t e x t ( 如果它是非n u l l 的) ,或者为n u l l 时指向一个 新创建的a c c e s s c o n t r o l c o n t e x t ( 有一个空的p r o t e c t i o n d o m a i n 列表) 。 2 创建封装了认证的s u b j e c t 的s u b j e c t d o m a i n c o m b i n e r i s ,必须在调用堆 栈中将s u b j e c t 引入( 或者注入) p r o t e c t i o n d o m a i n 。 3 用第 1步的a c c e s s c o n t r o l c o m e x t 和第2步的 s u b j e c t d o m a i n c o m b i n e r 创建a c c e s s c o n t r o l c o n t e x t 对象。 4 调用a c e e s s c o n t r o l l e r 的d o p r i v i l e g e d 0 方法,将第2 步创建的 a c c e s s c o n t r o l c o n t e x t 的p r i v i l e g e d a e t i o n 实例( 下面称为“p r i v i l e g e d a c c e s s c o n t r o l c o n t e x t ”) 作为参数传递给它。 5 运行时在内部保存p r i v i l e g e d a c c e s s c o n t r o l c o n t e x t 并执行 p r i v i l e g e d a c t i o n 对象的r u n 0 方法。在要访问受保护的资源时,需要调 用a c c e s s c o n t r o l l e r 类的c h e c k p e r m i s s i o n 0 方法。 6 在内部,这个调用让a c c e s s c o n t r o l l e r 寻求当前调用堆栈( 即 a c c e s s c o n t r o l c o n t e x t ) 。运行时将返回包含第4 步介绍的p r i v i l e g e d 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 。 7 如前所述,在检查a c c e s s c o n t r o l c o n t e x t 的帧的p r o t e c t i o n d o m a i n s 是否 允许所要求的权限之前,必须优化它。作为这个优化过程的一部分,要 j a v a 2 环境j a a s 研究与实现 求封装在埘v i l e g e da c c e s s c o n t r o l c o n t e x t 中的s u b j e c t d o m a i n c o m b i n e r 结合当前在调用堆栈上的p r o t e c t i o n d o m a i n s 和在p r i v i l e g e d a c e e s s c o n l r o l c o n t e x t 中出现的p r o t e c t i o n d o m a i n s 。结合过程如下: a 首先,优化p r i v i l e g e da c c e s s c o n t r o l c o n t e x t 的p r o t e c t i o n d o m a i n 以 删除所有系统和重复的域。 b 然后,优化当前调用堆栈上的p r o t e c t i o n d o m a i n 以删除系统域以及 已经出现在p r i v i l e g e da c c e s s c o n t r o l c o n t e x t 中的域。这时,得到的 两组p r o t e c t i o n d o m a i n 就都没有系统域并且只包含不相同的域。 c 对于从第b 步得到的每一个优化的p r o t e c t i o n d o m a i n ,创建一个新的 p r o t e c t i o n d o m a l n ,它复制了原来的属性如c o d e s o u r c e 和 p e r m i s s i o n ,而且还包含一组与在这个s u b j e c t d o m a i n c o m b i n e r 中包 含的s u b j e c t 相关的p r i n c i p a l 。 d 将优化的p r o t e c t i o n d o m a l n ( 从第a 步得到的) 附加到新创建的 p r o t e c t i o n d o m a i n 上( 从第c 步得到的) 。用这些结合的 p r o t e c t i o n d o m a i n 和 s u b j e c t d o m a i n c o m b i n e r 创建一个新的 a c c e s s c o n t r o l l e r c o n t e x t 并返回它。 8 现在有了一个优化的a e c e s s c o n t r o l c o n t e x t ( 其中这个s u b j e c t 的一组 p r i n t i p a l 与当前调用堆栈中的每一个p r o t e c t i o n d o m a i n 相关联) ,可以 安全地调用它的e h e e k p e r m i s s i o n ( ) 方法。 9 对c h e c k p e r m i s s i o n 0 方法的调用使得运行时在如前所述的循环中遍历 包含在这个a c c e s s c o n t r o l c o n t e x t 中的一组p r o t e c t i o n d o m a i n ,并检查每 一个p r o t e c t i o n d o m a i n 是否隐含所要求的p e r m i s s i o n 。这里值得注意的 一个事实是检查的一组p r o t e c t i o n d o m a i n 将包括当前调用堆栈的 p r o t e c t i o n d o m a i n ( 已经与在认证的s u b j e c t 中包含的p r i n c i p a l 相关 联) 和p r i v i l e g e da c c e s s c o n t r o l c o n t e x t 中的p r o t e c t i o n d o m a i n ( 在调用 d o a s ( 1 方法之前的调用堆栈) ,它还没有与包含在认证的s u b j e c t 中的 p r i n c i p a l 相关联。所请求的p e r m i s s i o n 必须由所有这些 p r o t e e t i o n d o m a i n 隐含( 即调用对应p r o t e c t i o n d o m a i n 的i m p l i e s ( ) 方法, 因为j a v a 2 环境已经预先建立了保护域p r o t e c t i o n d o m a i n 和权限之间的映 射关系) 。1 1 3 j a v a 2 环境j a a s 研究与实现 2 3 3j a a s 和j a v a 2 安全体系架构的关系 j a v a2 平台安全体系结构是以代码为中心的,在j a v a 安全体系结构中相关 的问题都是“这段运行中的代码的访问权限是什么? ”。j a v a 认证和授权服务是 以用户为中心的,在j a a s 中,相关问题变成了“运行这段代码的认证用户的 访问权限是什么? ”。【1 3 】 j a v a 2 平台安全体系结构利用安全策略( p o l i c y ) 和保护域 ( p r o t e c t i o n d o m a i n ) 来定义、组织和聚集静态和或动态访问权限。 j a v a2 平台安全策略设计为根据p r o t c c f i o n d o m a i n 授权访问权限,而不是向 单个的一段运行代码授权这种权限。因此,每一个类或者对象“属于”一个 p r o t e c t i o n d o m a i n ,安全策略对这个保护域授予了某种访问权限。重申 p r o t e c t i o n d o m a i n 的观点,一个特定的p r o t c c t i o n d o m a i n 封装了一组类( 例如, 所有从特定位置上装载、并用特定密钥签名的所有类) ,它们的实例将会授予同 样的一组权限。 j a v a2 平台安全体系结构权限检查是通过如下方式进行的: 在j a v a2 平台安全体系结构中,所有访问权限都是类型化的并且有层次结 构,其根是抽象类j a v a s e c u r i t y p e r m i s s i o n 。通常一个p e r m i s s i o n 包含一个目标 ( “由这个权限控制的操作将对谁执行? ”) 和一个操作( “如果这个权限允许的话, 对这个目标将执行什么操作? ”) 。 j a v a2 平台安全体系结构以p e r m i s s i o n s 对象的形式提供了一组 p e r m i s s i o n c o l l e c f i o n 对象,代表一个实例将会授予的一组权限。一个p e r m i s s i o n s 对象是单个p e r m i s s i o n 实例的集合的集合。p e r m i s s i o n s 类还提供了一个 i m p l i e s ( 1 方法。不过,为了让一个p e r m i s s i o n 隐含另一个,它们必须是同一类 型的。因此,调用p e r m i s s i o n s 对象的i m p l i e s 0 方法会使后者首先在其内部集 合中定位正确的p e r m i s s i o n 实例( 那个包含一组正确类型的p e r m i s s i o n 对象的 实例) ,然后调用由此获得的p e r m i s s i o n 对象的i m p l i e s 0 方法,并向它传递要 检查的p e r m i s s i o n 。 保护域p r o t e c t i o n d o m a i n 和权限之间映射的建立过程如下: j a v a 运行时通过名为j a v a s e c u r i t y p o l i c y 的类( 的具体扩展) 设置 p r o t e c t i o n d o m a i n 与授予它的权限之间的映射。这个类的默认扩展是 s u r l s e c u r i t y p r o v i d e l p o l i c y f i l e 。正如其名字所表明的 , j a v a 2 环境j a a s 研究与实现 s l l r l s e c u r i t y p r o v i d e r p o l i c y f i l e 从一个文件中获得c o d e s o u r c e ( 由位置u r l 和 s i g n e r 标识别名) 与授予它的权限之间的映射。可以通过环境变量 j a v a s e c u r i t y p o l i c y 将这个文件的位置作为输入提供给m 。p o l i c y 类提供了一 个名为g e t p e r m i s s i o n s 0 的方法,可以调用它以获得授予特定c o d e s o u r c e 的 组权限。 动态权限是在权限检查时由生效的策略所授予的、并由p r o t e c t i o n d o m a i n 隐 式地处理。对p r o t e c t i o n d o m a i n 调用i m p l i e s ( ) 方法时( 实质上是对权限进行检 查时) ,它调用安装的p o l i c y 类的g e t p o l i c y n o c h e c k 0 方法。因而p o l i c y 类提 供了刷新( r e f r e s h ) 所授予的一组权限并向调用p r o t e c t i o n d o m a i n 返回这个刷新 的权限的可能。这保证了针对在构造时提供的p e r m i s s i o n c o l l e e t i o n 和在那一瞬 间绑定的p o l i c y 的组合进行权限检查。 j a a s 以用户为中心的授权体系结构是在原来j a v a2 平台安全体系结构的 堆栈检查机制之上实现的。其通过要求用一组

温馨提示

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

评论

0/150

提交评论