(计算机软件与理论专业论文)基于j2ee的应用系统的安全性.pdf_第1页
(计算机软件与理论专业论文)基于j2ee的应用系统的安全性.pdf_第2页
(计算机软件与理论专业论文)基于j2ee的应用系统的安全性.pdf_第3页
(计算机软件与理论专业论文)基于j2ee的应用系统的安全性.pdf_第4页
(计算机软件与理论专业论文)基于j2ee的应用系统的安全性.pdf_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

摘要 j 2 e e 系统的安全性是基丁容器分层实施的。它的设计和部署是一个比较复杂的系统_ :程。主要涉 及到各层的川户认自f ,访问授权和各层组件之间通信通道的安全三方面的内容。j 2 e e 使用声明性的认 证授权控制和可编程的认证授权控制两种方式保证符层的安全性。通信通道的安全一般由s s l 协议和 某些特殊的通信加密协议保障完成。认证莉i 授权是两个互相关联的安全性保障措施。前者主要控制访问 t l j 户的真实性,厉者住前者的基础上保证_ l 户访问操作不超出系统对它的许可范围。在j 2 e e 的一个安 全域中,认i i l _ ! d - j q 户登陆或第一次访问时进行。认证的结果s u b j e c t 对象是以后每次访问调用所引发的 授权操作的重要判断根据。 j 2 e e 系统的w e b 容器、e j b 容器利客户端应j h 程序容器,具体负责进行用户的认证和访问授权控 n _ 1 2 作。容器的安全性控制是基于安全角色进行的。安全角色可以认为是一组权限的集合标识。j 2 e e 系统部署的时候,管理员要进行安全角色和j 2 e e 服务器用户的映射工作;在部署时要用到的一个关键 性的安全性信息说明文忭,即部署符文什:它是一个x m l 的说明文件,包含有认证类型,资源授权的 约束项,系统安全角色说明等等有关安全和运行的说明文件。 呼铁局的货票有询系统是一个基t - j 2 e e 的实例。由丁系统的分布性特征和铁路数据库的安全要求 的特殊性,系统在设计时不但要考虑到功能性的基本要求,而且要考虑到在系统部署之后对原有系统的 安全性的影响和其本身的安全性。本文给山了4 个j j 户认证和授权方面的例程,通过对安全性实施的分 析比较,探讨了基于j 2 e e 系统的安全性保证的一些关键性问题雨j 解决方案。 关键字 j 2 e ee j b 容器认证授权 安全角色 a b s t r a c t t h es e c u r i t yo fj 2 e es y s t e mi sb a s e do nc o n t a i n e ra n di m p l e m e n to ne v e r yt i e r i ti sac o m p l i c a t e dw o r k t o d e s i g n a n dd e p l o yt h e s e c u r i t y o fj 2 e es y s t e m s e c u r i t yf i e l d si n c l u d eu s e ra u t h e n t i c a t i o n ,a c c e s s a u t h o r i z a t i o na n dt h es e c u r i t yo fc o m m u n i c a t i o nc h a n n e l t h e r ea r et w ok i n d so fd i f f e r e n tm e t h o d su s i n gt o s e c u r e e v e r yt i e r i nj 2 e es y s t e m :d e c l a r a t i v ea n dp r o g r a n u n a t i cm e c h a n i s m s s le n a b l et h e s e c u r i t yo f c o m m u n i c a t i o nc h a n n e lb e t w e e ne v e r ym o d u l ec o n n e c t e dt h r o u g ht h ew e b i n s t e a do fs s l ,t h e r ea r es o m e o t h e re n c r y p tc o m m u n i c a t i o n p r o t o c o l sw h i c h c a na l s ob eu s e d 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 na r et w ok i n d s o ff u n d a m e n t a lw a y st o i m p l e m e n tt h es e c u r i t y t h er e l a t i o nb e t w e e na t t 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 ni s c l o s e7 h ef o r m e ra n s w e rt h ea u t h e n t i c i t yo fu s e ra n dt h el a t e r , w h i c hi se s t a b l i s h e do na u t h e n t i c a t i o n ,l i m i t s t h ea c c e s sn o te x c e e d i n gt h e s y s t e mp e r m i s s i v ea r e a s w i t h i nt h es a m es e c u r i t yr e a l m ,a u t h e n t i c a t i o ni s r e q u i r e do n l yi nt h el o g i ns t e po r a tt h ef i r s ta c c e s s t h er e s u l to fa u t h e n t i c a t i o n o p e r a t i o n ,t h es u b j e c to b j e c t ,i s t h eb a s i st oa u t h o r i z ea tt h el a t e ra c c e s sm o m e n t i nj 2 e es y s t e m ,w e bc o n t a i n e r , e j bc o n t a i n e ra n dc l i e n ta p p l i c a t i o nc o n t a i n e ra r er e s p o n s i b l ef o rt h eu s e r a u t h e n t i c a t i o na n da c c e s sa u t h o r i z a t i o nt h es e c u r i t yc o n t r o li nc o n t a i n e ri sb a s e do ns e c u r i t yr o l e s t h e s e c u r i t yr o l ei s t h es y m b o lo fas e to fr i g h t sw h i l ed e p l o y m e n tt h ej 2 e es y s t e m ,t h eu n a v o i d a b l ed u t yo f s y s t e mm a n a g e r si se s t a b l i s h i n gt om a pb e t w e e nt h es e c u r i t yr o l e sa n dj 2 e es e r v e ru s e r s t h e r ei sac r u c i a l s e c u r ei n f o r m a t i o nd e p l o y m e n tf i l e ,w h i c hi sd e m a n d e da tt h ed e p l o y m e n t t h ed e p l o y m e n tf i l ei sas t a t e m e n t f i l eo fx m l t y p ei n c l u d i n gm a n yi m p o r t a n ts e c u r ei n f o r m a t i o ns u c ha s ;a u t h e n t i c a t i o nt y p e ,s e c u r ec o n s t r a i n i t e m s ,s e c u r i t yr o l e sd e f i n ei t e m sa n d e t c t h eh ut r a i nb u r e a u c a r g o t i c k e ts e a r c h s y s t e m i sa n a p p l i c a t i o nb a s e d 0 1 1j 2 e e b e c a u s eo f p a r t i c u l a r i t y i nt r a i nd a t a b a s e s e c u r i t y a n dd i s t r i b u t i o no fs y s t e m ,n o t o n l y t h ef u n d a m e n t a lf u n c t i o n r e q u i r e m e n t ,b u ta l s ot h es e c u r i t yo fs y s t e ma n di n f l u e n c et oo r i g i ns y s t e mm u s tb et h o u g h ta b o u t i nm y p a p e r , ld i s c u s ss o m ei m p o r t a n ts e c u r ep r o b l e ma n dg i v es o m em e t h o dt od e a lw i t ht h e m b y4e x a m p l e so nu s e r 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 n ,i e x p l a i nt h ep r i n c i p l ea n dc o m p a r ew i t ht w od i f f e r e n tr e s u l t s k e y w o r d s : j 2 e ee j bc o n t a i n e r a u t h e n t i c a t i o na u t h o r i z a t i o n s e c u r i t y r o l e 笫一帝j 2 e e 珂、境 第一章j 2 e e 环境 随着w e b 平i r a e m e t 应川和需求的增| j = = ,越米越多的企业开始开发与部署基于w e b 的企业内部网 和外部网麻f j 。j 2 e e 为基丁w e b 的企业成_ l j 提供j ,丸与伦比的支持。j 2 e e 是一个标准的体系结构,它 主要面向使t jj a v a 语言开发基于w e b 的企业应用。j 2 e e 平台的主干是e j b 体系结构,它规范t 女n , f o ; 州j a v a 程序设计语言开发与部署服务器端应川业务逻辑组什。j 2 e e 平台的其他部分,例如j s p 和s e r v l e t , 是对e j b 体系结构的补充,以提供呈示逻辑以及客户交互控制逻辑等功能。 1 1j 2 e e 体系结构 1 1 1j 2 e e 多层结构 j 2 e e 平台是一个多层的分布式的戍_ e = | 程序模型。应用程序的逻辑部分根据它要实现的功能被封装 到不同的组什中,组成j 2 e e 应用程序的大量组什根据它l r f 王j 2 e e 环境中的不同层次被安装到不同的 机器中。 在传统的两层客户端服务器端模式l 1 ,程序员编写与特定软件紧密结合的应用程序。通常是直接 在客户端的程序中访问数据库服务或事务服务。这种应用程序客户端称作胖客户机,因为应用程序逻辑 驻留神:客户端的机器上,这使的客户端程序变得庞人复杂而且不适台移植到其它系统中。 j 2 e e 体系结构是一个三层或多层的结构。但是我们通常将j 2 e e 应用程序的多层结构看为三层结 构。它们分别是客户和表示层业务逻辑层,数据层。与传统的客户端服务器端结构相比,j 2 e e 体 系结构使用一个中间层( 业务逻辑层) ,它在客户端和厉端数据库之间操作。中间层存储了系统的商业 逻辑,并协调客户端与后端数据库之问的交互显示。j 2 e e 体系结构中的客户和表示层用于和客户有关 的交互操作。在这层上的可以是一个客户端程序,也可以是一个提供h t t p 浏览服务的w e b 系统。 j 2 e e 一层体系结构比传统的两层结构更灵活和更可扩展。这是因为商业逻辑和服务( 如安全性 苄事务) 都驻留在r p 间层并且独立于释户端。使用j 2 e e 三层结构,中间层中实现业务逻辑的e j b 组件会根据客户端的请求,提供向它服务并把结果返同给客户端。因此j 2 e e 三层结构的中间层服务 对j 二辑广端是不可见和透明的。使用j 2 e e 三层系统,可以做到在中间层上对商业逻辑的更改和增强 对客户端的透明羊无关。 另外j 2 e e 结构中的中间层组件( e j b ) 是以j a v a 编程语言实现的,它们具有很好的可移植性。 3 第一带j 2 e e 环境 i j 以1 r 常容易地将柱某种应川服务器r 实现的系统重新移植到其它不矗】的应用服务器和主机上。 1 1 2 业务逻辑层:( e j b 应用) 在j 2 e e 体系结构t p 应刚逻辑都位丁业务逻辑层中。、【k 务逻辑层通常使用j a v a 解决方案构建,主 要使川企业j a v a b e a n ( e j b ) 组1 ,| :完成业务逻辑。企业j a v a b e a n ( e j b ) 是s u nm i c r o s y s t e m s 对 c o r b a 的可移植性和复杂性的解决方案。e j b 引入了比c o r b a 更简单的编程模块,它可以让开发 人员创建可移植分布式组件。ej b h f l :由e j b 服务器提供运行环境。常用的商业e j b 服务器有i b m w e b s p h e r e ,b e aw e b l o g i c s u nj 2 e es d k 等。业务逻辑一股包括: 执行全部必须的计算和动作 r 作流管理 表示层中全部的数据访问管理 日b 编程模块可以让开发人员创建安全的、事务性的利持久的商业对象该对象使用非常简单的 编 g 模块和声明属性。与c o r b a 不同,e j b 的访问控制( 授权安全性) 和事务管理等设施非常易于 编程。c o r b a 需要使用复杂的a p i 来利用这些服务,而e b 则根据一种称作“部署描述文件”中 的卢明将这些服务白动应州到企业b e a n 。这个模型确保了企业b e a n 开发人员可以集中精力编写商 业逻辑,而由容器自动管理相应的安全性和其它服务。 由丁e 】b 规范颁布了一组明确的e j b 容器芹e j b 组件z 间的契约,因此e j b 具有可移植 性。这些契约和规则确切的规定了容器必须为e j b 提供什么服务,企业b e a n 开发人员需要使用什 么a p i 平i i 卢明属性来创建ej b 。由于详细指定了e n t e r p r i s eb e a n 的生命周期,因此e j b 容器知 道如何庄运行时管理e j b ,企业b e a n 开发人员确切知道e n t e r p r i s eb e a n 在其存在期间可以做什 么。 企业b e a n 简化了分布式对象的开发、部署和访问。ej b 分布式对象( 一种e n t e r p r i s eb e a n ) 的开发人员只需依照为e j b 建立的契约和协议实现对象。支持e j b 的应用程序服务器可以使用任何 分柿式网络协议( 1 a v ar m i 或h o p 等) 。不管在某个特定产品中使用的基本网络协议是什么,e 】b 使 川相同的编程a p i 和语义以j a v ar m i i i o p 访问分布式对象。协议的细节对应用程序和b e a n 开 发人员隐藏;所以定位和使用分布式即b 的方法是相同的。 通常在应用服务器内部实现业务逻辑层。应用服务器可咀自动处理许多事务,例如事务处理、安全 性、持久性连接池、通信利命名服务。这样就把业务逻辑从资源管理的需求中分离出来,开发人员可 以集中精力开发应_ ; 逻辑。在应用服务器方面,市场上提供多种应用服务器的产品。它们在管理性、安 4 第一章j 2 e e 纠、境 全性、可靠性、年l 支持工具方面存在一些差别,但是对e j b 的支持和功能方面是一致的。 1 1 3 客户表示层( w e b 应用) 客户层和表示联可以看为是间一层。它们都是为了把业务逻辑层中e j b 执行的计算和动作的结果 返回给用户。它们都可以看为是w e b 府j | j 的一部分,位j :w e b 服务器中。常见的商业w e b 应用服务器 有m i c r o s o f ti l s 、i b mw e b s h p e r e 等。w e b 服务器除了处理对站点静态w e b 页面的请求外,通常还要 处理多个应州程序的访问晴求。以w e b 府j j 相对应的是何7 :业务逻辑层的e j b 应用。客户层和表示两 种之间的区别在丁: 表示层生成了w e b 页面中的动态内容。动态内容通常从数据库( 从e j b 中返回) 获得。表示层的 另一个土要任务就是把客户端传来的w e b 页面包含的请求进行打包。表示层可以使用大量不同工具进 行构建。可以使用m i c r o s o f t 的解决方案:活动服务器页面( a s p ,a c t i v es e r v e rp a g e s ) 或者n e t s c a p e 的服务器端j a v a s c r i p t ,或者联合使川s e r v l e t 和j a v a 服务器页面( j s p ) 。 客户层可以看成是运行在用户机器上的w e b 浏览器,或一个客户端的程序。他的功能是显示数据 剃输入更新数据。通常,我们使_ l | _ | f 面两种常见方法之一来构建客户层。纯粹的h t m l 客户端和混合 h t m l 动态i - i t m i j j a v a s c r i p t 的客户端。 1 _ 1 _ 4 数据层( 数据库) 数据层负责数据管理。数据层可以是一个现代的简单关系型数据库。同时它可以包含其它数据源的 数据访问程序。数据层存储数据,并且为业务逻辑层提供请求的数据。 要确保应川程序协调工作,设计人员应该尽量把动作、业务逻辑和数据分开。逻辑处理位于业务逻 辑层中。有时候基本数据库和业务逻辑会有重叠的部分,而且在数据层中会存在一些基本的业务逻辑和 一些简单的约束条件,以确保数据库数据的安全性和完整性。 1 2 j 2 e e 应用组件 j 2 e e 应用程序由组件构成。一个j 2 e e 组件就是一个软件单元,它随同它相关的类和文件被装配到 j 2 e e 惠程序r h 并实现与其它组件的通信。j 2 e e 规范定义了三种j 2 e e 组件的: 5 第一窜j 2 e e 王_ 卜境 客户端组仆:客户端应程序剐a p p l e t 是运行在客户端的组件。 w e b r 仲:j a v as e r v l e t 卡j a v a s e r v e rp a g e s ( j s p ) 是运行在服务器端的w e b 组件a 业务组什:e n t e r p r i s ej a v a b e a n ( e j b ) 1 :t 1 是运行在服务器端的商业软什。 j 2 e e 纽什 hj a y a 编程语言写成,井剥_ l 该语言写成的其它程序一样进行编译。j 2 e e 组件和”标准 的”j a v a 类的不同点在丁:它被装配在一个j 2 e e 应川秽序中,具有崮定的格式并遵守j 2 e e 规范,它被 部署在j 2 e e 服务器中并由j 2 e e 服务器对其进行管理。 1 2 1 客户端组件 一个j 2 e e 辑户端组件既可以是 1w e b 客户端: 一个w e b 客户端由两部分组成: 从服务器传送来的页面的w e b 页面。 个基于w e b 的客户端,也可以是一个基于应用程序的客户端。 包含各种标记语言( h t m l 、x m l 等等) 的动态w e b 页面和显示 一个w e b 客户端有时被称之为瘦客户端。瘦客户端一般不做数据库查询、复杂的商业规则及连接 应川程序这样的操作。当使用一个瘦客户端时,像这样的重量级的操作被交给了在j 2 e e 服务器执行的 企业b e a l l 口这样可以充分发挥j 2 e e 的服务器端技术在安全性、速度、耐用性和可靠性方面的优势。 2 应用程序客户端: j 2 e e 应_ l _ f j ¥序客户端是运行在客户端机器上的一个j a v a 程序。此j a v a 程序和一般j a v a 程序有一 定的区别,它是运行在一个客户端应_ f j 程序容器中。通过客户端程序用户可以处理比标记语言所能提供 的更加负责的任务。应用程序客户端程序可以直接访问运行业务逻辑层的企业b e a n a 1 2 2w e b 组件 j 2 e e 的w e b 组件既可以是s e r v l e t 也可以是j s p 页面。s e r v l e t 是一个j a v a 编程语言类,它可以动 态地处理请求并做出响应。j s p 页面是一个基丁文本的文档,它以s e r v l e t 的方式执行。但是它可以更方 便建立静态内容。 在装配应用程序时,静态的h t m l 页面和a p p l e t 被打包到w e b 组件中。服务器端的功能类也可以 同时被打包到w e b 组件中。和客户层一样,w e b 层也可咀包含一个b e a n 类以管理用户的输入并将输入 发送给业务逻辑层的企业b e a n 进行处理。w e b 层的b e a n 对象和业务逻辑层的企业b e a n ( 脚b ) 对象 完全不同,两者继承的父类和接v i 完全不同。 第一帚j 2 e e 王i 、境 1 2 3 业务组件 商业代码,表示r 与特定商业领域的相适虑的逻辑。它由运行在业务逻辑层的企业b e a n ( e j b ) 处 理执行。一个企业b e a n 可以从存储器或数据层的数据库巾获取数据,对它进行处理,并将其处理的结 果发送给客户端。 1 2 4 组件的打包封装 j 2 e e 组什按层次分别打包并绑定到一个j 2 e e 应_ l j 程序中进行部署。组件中诸如g i f 、h t m l 文 仆和服务器端功能类这样的相关文件以及一个部署说明文件构成了一个组件模块并被添加到j 2 e e 应 川程序中。一个j 2 e e 应用由个或几个企业b e a n 组纠模块、w e b 组件模块或应用程序客户端组件模 块组成。根据不同的设计需求,最终的企业解决方案可以是一个j 2 e e 应用程序,也可以由两个或更多 的j 2 e e 应用程序组成。 一个j 2 e e 应川程序以及它的每一个模块有它自己的部署说明文件。部署说明文件是一个x m l 文 什,它描述了组什部署时的殴置情况。例如,一个企业b e a n 组件的部署说明文件中描述了企业b e a n 的事务属性,安全性授权,认证方式等信息。部署说明信息是公开的,因此部署时可以直接改变部署说 明文件来改变j 2 e e 的部署。 一个j 2 e e 应用以及它的所有组件模块被打包到一个e n t e r p r i s ea r c h i v e ( e a r ) 文件中。e a r 文 什就是一个具有e a r 扩展名的标准的j a v aa r c h i v e ( j a r ) 文件。每个e a r 包文件由e j bj a r 文件和 w a r 文件组成。如果在表示层使 j 了客户端应用程序,文件中就还有一个客户端j a r 包文件。这三个 包文件的内容如f : 1 、e j bj a r 文件包含一个部署说明文件、企业b e a n 文件以及相关的文件。 2 、客户端j a r 文件包含一个部署说明文件、客户端应_ l = j 程序的类文件以及相关的文件。 3 、w a r 文件包含一个部署说明文件、w e b 组件文件以及相关的资源。 使朋模块平i | e a r 文件使得运用同一组件以装配许多不同的j 2 e e 应用程序成为可能。不需要额外 的编程j :作,唯一要做的是在j 2 e ee a r 文件中添加各种j 2 e e 模块。 7 始一章j 2 e e 习、境 1 3 j 2 e e 容器和服务 1 3 1 j 2 e e 运行时环境( 容器) j 2 e e 应州r t 4 l 。各自运行r f :相席的运彳j 二环境中,即容器。不同服务器厂商推出的容器产品不尽相同, 但一定都符合通川接口标准,且均为j 2 e e 组件提供了许多必不可少的底层公共殴施。不同的组件模块 可通过配置i 。具部署到对应的容器中,j 2 e e 标准共定义了以r 四种容器: a p p l e t 容器:远行a p p l e t ,由运行在客户端的一个w e b _ i ;:4 览器帚lj a v a 插件一同组成。 客户端应川样序容器:管理应用程序客户端n f i :的运行。客户端应用程序和它的容器运行在客户端中。 w e b 容器:管理j s p 页而和s e r v l e t 组什的执行。w e b 组件和它的容器在j 2 e e 服务器中。 e j b 容器:管理1 2 e e 麻用程序的企业b e a n 的执行。e j b 和它的容器在j 2 e e 服务器中。 部署时会将j 2 e e 应用程序组件安装到j 2 e e 容器中,它们之间的结构如图一所示: j 2 e e 服务器 i 气 、 浏览器 客户端 同网 厂、 l 应川雅 j f 序 i e j b 容器 、 客户端容器 罔罔 数据库 、 客户端机器 蚓一 值得指山的一点是,j 2 e e 体系结构的主导思想就是开发人员只需要专注于其业务逻辑的设计及编 程,而不必为考虑系统级问题分心,这一设计理念主要就是通过容器的概念体现出来的。典型地,容器 提供的基础设施包括:内存管理、同步分线程、垃圾收集、可用性、可伸缩性、负载平衡和容错。容 器需要实现的基本接口和基础设施在j 2 e e 规范中都有详细定义但具体实施方案则因容器供应商的不 同而不司能全然相同。因此j 2 e e 在保持代码兼容性的同时,也为支持服务器的特性提供了一定的余地。 第一幸j 2 e e 环境 _ _ _ - _ - - - - ,_ 。- n h _ 一 1 3 2j 2 e e 企业服务 一般认为,现代企业计算解决方窠除r 企、f k 的业务逻辑外,还需要有些基本服务的支持,j 2 e e 环境的另一人特色就在于它提供了完善的企业级服务,以满足各类席朋的需要。这些服务主要有: 1 ,连通性服务: j d b c ( j a v ad a t a b a s e c o n n e c t i v i t y ) :提供数据库连接孙访问服务 j c a ( j a v ac o l m e c t o r a r c h i t e c t u r e ) :提供与1 日有遗留系统之间的连接 2 ,通信般务: j a v a 消息服务j m s ( j a v am e s s a g i n gs e r v i c e ) :提供层与组件之间的消息传递 i l _ l 子怖什服务( j a f j a v a m a i l ) :提供l 乜子1 1 1 j 什服务 j a v ai d l r m i i i o p :c o r b a 兼容接口,提供j 2 e e 与c o r b a 的通信服务 j a x ( j a v ax m l a p i s ) :提供x m l 语法分析,绑定服务 3 ,认证服务: n d i ( j a v a n a m i n g a n dd i r e c t o r yi n t e r f a c e ) :提供分布式命名和目录服务 4 其他服务: j t s j t a ( j a v a t r a n s a c t i o n s e r v i c e ) :提供事务处理f 监控服务 j a a sfj a v a a u t h e n t i c a t i o na n d a u t h o r i z a t i o ns e r v i c e ) :提供访问控制等安全服务 1 4j 2 e e 的优势和业界的支持 j 2 e e 提供了一个企业级的计算模型羊f i 运行环境。它通过提供企业计算环境所必需的各种服务,使 得部署在j 2 e e 平台上的多层应用可以实现高可用性、安全性、可扩展性和可靠性。它的优越性在于: 计算平台支持j a v a 语言,使得基于j 2 e e 标准开发的应用可以跨平台地移植;j a v a 语言非常安全、严 格,这使开发者可以编写出非常可靠的代码:j 2 e e 提供了企业计算中需要的所有服务,且更加易用; j 2 e e 中多数标准定义了接1 1 3 ,例如j n d i ( j a v an a m i n ga n dd i r e c t o r yi n t e r f a c e ) 、j d b c 、j a v am a i l 等,冈此可以雨【许多厂商的产品配台,容易得到广泛的支持;j 2 e e 树立了一个广泛而通用的标准。大 大简化了应用丌发和移植过程。概括起来,j 2 e e 体系结构的优点是: 1 ,j a v a s e r v l e t 和j s p 都要编译为j a v a c l a s s 才作为s e r v l e t 运行,因此执行性能会明显提高。 2 j a v as e r v l e t 和j s p 中可以完全使埔j a v a 进行编程,可以完成许多简单的商业逻辑特别是j s p , 9 第一章j 2 e e 环境 可以直接。l 弓h t m l ,冈此简化了页面的输出,这样就保留了脚本语言易于使i f ;的优点。 3 复杂的商业逻辑以组件的形式部署在e j b s er v e rr h 由丁e j b s e r v e r 提供了多种组什事务服务, 使系统更能够应付火晕的) f 发州户和管理复杂的事务逻辑。 4 e j bs e r v e r 中集成的纡t 4 q 命名服务町以使组件位置透明化,简化了组件的部署和维护。 5 开发过程易丁分t ,可以由专人负责编写组件其他人组装页面。 6 j 2 e e 平台全面支持和实施x m l ,这种强人的组合可使x m l 具备跨平台的兼容性,甚至用于对x m l 代码进行语法检查和凋试的i :具也i l f _ l j 平台无关。 j 2 e e 已经成为开发 i z 子商务廊川的事实标准。l l 是认识到j 2 e e 平台作为一种可扩展的、全功能 的平台,可以将关键的企业应用扩展到任何w e b 浏览器上并可适合多种不同的i n t e r n e t 数据流、可连 接到儿乎任何一种传统数据库和解决方案、使企业经理根据多家企业所提供的产品和技术开发和部署最 佳的解决方案进而降低开发网络化应用的费_ f = j 和复杂性这一巨大优势,现在很多厂家都表示对j 2 e e 给 予支持,并将j 2 e e 技术作为大型b t o b 市场和海量交易处理的安全稳定的端到端平台。已经有许多家 厂商取得了s u n 公司的许可,如b e a s y s t e m 、s y b a s e 、o r a c l e 以及f u j i t s u 等等。无疑,j 2 e e 为企 业勾勒了一幅具有更强的伸缩性、开放性、宜全陛且简单易用的未来应_ i j 的蓝图。 0 雏:审j 2 e e 巾的立伞性批水措施 第二章j 2 e e 中的安全性基本措施 柏:一个企业级的分布式集成系统中,安全性危害和对资源缺乏有效性控制都将危及到整个系统的 有效运行。一个完整的系统必须有相应的措施米分辨山对系统空全性的各种威胁,并且采取各种方式 减少降低这些威胁。事实上并不是所有的安全性威胁都有必要和都有可能彻底清除所以在很多环境 中可咀采取一些安全性机制,通过安全机制把对安全性的威胁控制在一个可以接受的水平上。 在安全性的具体实施方面,j 2 e e 产品和j 2 e e 系统本身并没有某种安全措施可以彻底消除己经 存在的各种安全性问题。j 2 e e 架构的办法是对现有的安全性服务进行分级实施并且利用现有的各种 安全性保障措施来确保系统的安全性。也就是说j 2 e e 本身没有提出一个新的安全性服务和机制来保 障j 2 e e 的安全性。 j 2 e e 架构本身是一个三层的分布式结构,这和j 2 e e 的安全性分级处理的思想是一致的。j 2 e e 系 统的安全性按! 嘏j 2 e e 的结构分成客户层的安全,e j b 层的安全和数据层的安全。分别在w e b 服务器, e j b 服务器和数据库上分别实现它们的安全性。所以只要保证这三层的安全性和通信通道的安全性,整 个j 2 e e 系统本身也就是安全的。一般说来,数据层的安全性由数据库本身承担。三层之间的通信通道 的安全性由已有的s s l 协议或者其它( 町能是专属) 加密通信方法保证。在其它两层w e b 应用层和e j b 层的安全性由各白的容器负责。目前可以采用的保证安全性的方法主要有:认证,授权,签署,加密和 审核等。总的看来,j 2 e e 作为一个分布式的企业平台,它的安全性主要集中在容器上的认证和授权以 及不同组什问的通信通道安全上。 不仅在j 2 e e 中,在其他的环境和系统中,认证和授权也是两个必不可少的安全保证手段。认证 是用户,计算设备或者一个进程用来验证身份的过程。授权是系统根据请求用户的身份允许其在某 种程度上访问和操作一段敏感软件和资源的过程。这两个概念密不可分。没有授权,就无需知道用 户的身份,也无法保证系统的资源。没能认证,就不可能区分可信和不可信用户,系统更不可能进 行授权控制。3 2 e e 中普遍的做法是用户先一次性的、认证( 当然允许用户在某个过程中重新认证) , 之屙用户进程访问系统资源时由授权模块动态的实时进行授权检查。认证与授权的另一个有趣方面 是,一个实体在系统中可以有几个角色。例如,j = 户可以同时是公司职工( 表示他需要对公司的电 子m 日什有访问权) 和该公司的会计师( 表示他需要对公司财务系统有访问权) 。 第一章j 2 e e 中的安争件雄乖描施 2 1 认证 认证是埘户,计算设备或者进程川来验证身份的过程。认证通过使川凭证信息例如:用户名密 码米匝i 答“你是准? ”的安全性问题。j 2 e e 的认证模块必须证明认证用户( 进程) 的身份。除此之 外,在需要时它还必须记住平l j 传输此州户的认证的身份信息给系统中的其他不同组什,从而实现一个 系统+ 次登陆认址。 2 1 1 认证的过程和结果 j 户在登陆或者 h 户进程在访问某个系统资源时,容器会自动激活认证过程。登陆用户和用户进 程会向系统认证模块发出它的凭证信息例如:口令密码。认证模块会根据这个凭证在系统的用户信 息库中查找相关项。j 2 e e 中认证刚的h j 户信息存放在j 2 e e 服务器的一个l d a p 目录数据库中,由系 统维护和使h j 。如果认证成功,认证模块会为此_ l | ;j 户的每个角色身份对应生成一个p n i n c i p a l 对象, 并且把这些p r i n e i p a l 对象插入到用户认证信息对象s u b j e c t 中。在登陆过程中系统为每个对象生成 唯一的一一个s u b j e c t 对象,用来存放j 【 j 户的信息。s u b j e c t 对象根据认证地方的不同存放在不同的容 器中,可以在客户端也可以在j 2 e e 服务器上。此后用户( 用户进程) 在以后的访问操作过程中的授 权根据就是这个s u b j e c t 对象中的角色信息。授权模块就是将系统的授权策略与包含在s u b j e c t 中 的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 s ) 和主体( p r i n c i p a l s ) 是紧密关联的。崩户进程中除了实( s u b j e e t s ) l l 体( p r i n c i p a l s ) 外利安全性相关的其它数据结构还有安全属性和凭证信息。 实体( s u b j e c t s ) 可以被当作是用户认证信息的容器。它是一种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 表示要求访问电子邮件系统和财务系统的雇员。该s u b j e c t 将有两 个p r i n c i p a l ,一个与用于电子邮件访问的雇员的用户标识关联,另一个与用于财务系统访问 的j = l j 户标识关联。 主体( p r i n c i p a l s ) 是被在企业安全服务验证了的实体的角色身份。主体( p r i n c i p a l ) 片j 主体名 作为它的标蚬。通常情况一f t 体名就是用户的登陆名,认证数据就是登陆的密码。j 2 e e 规范 中并没有限定j 2 e e 产品使用怎样的认证方法,田此主体名和认证数据的内容和格式依不同的 认证协议而不同。p r i n c i p a l 不是持久性的,所以每次用户登录时都必须将它们添加到 i2 矩- 二章j 2 e e 中的安全性批奉措施 s u b j e c t 。p r i n c i p a l 从s u b j e c t 中除点 p r i n c 】p a l 。 作为成功认证过程的一部分被添加到s u b j e cl 。同样,如果认证失败,则 p r i n c i p a l 。不管认证成功与否,当应用程序执行注销时,将除去所有 安全属性( s e c u r i t ya t t r i b u t e s ) :每个土体( p r i n c i p a l ) 都有一系列与之相关的安全属性。 安全属性可用来访问被保护的资源,检奄_ l j 户的身份利完成其他一些安全相关的用途。j 2 e e 规范j f 没有限定什么样的安全属性将与主体相联系。 凭证( c r e d e n t i a l ) :凭证包含或被引用为j 2 e e 系统认证一个实体的认证信息。如果成功的通 过_ 认证,主体将获得一个包括安全属性的凭证。如果被允许的话,一个主体也可能获取另一 个t 体的凭证。在这种情况r 两个主体在同一安全域中具有相同的安全属性。 2 1 2 认证的方式种类 _ | = 1 户在访问被保护的资源前必须首先通过认证。认证时每个用户被要求提供一个凭证信息例如:用 户z f i 令给认证模块。j 2 e e 中认证的方式根据认证所在地的不同可以分为在客户端上的认证和在服务 器h 的认证两种。 1 客户端上的认证:用户可能在与服务器交互之前在客户端程序上进行认证,使用这种认证方式 要在客户端应用程序上插入适当的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 ) 模块而实现。认证客户之后,将一组( 如果有多个安全角色身份) p r i n c i p a l 对象与客户相关联。 以后认证客户进样在通过远程接1 2 1 调删e j b 组件方法时,将和调t j 申请一起传递s u b j e c t 对象到e j b 容 器中,e j b 释器的授权模块根据s u b j e c t 进行授权判断。 2 服务器上的认证:如果客户环境中无法访问任何认证基础结构,可以通过安全连接将认证信息 发送到服务器上,可以是在w e b 容器也可以在e j b 容器上。这时由服务器端的容器负责认证用户。在 用户发出远程访问申请时,服务器负责探测客户的调用申请,并将相应的s u b j e c t 对象和服务器中实际 执行的线程相关联,由线程代理处理这个调 j 。 无论是客户端还是服务器端的认证,认证成功后都要将p r i n c i p a l 对象与客户相关联。对于服务器 端的队证,认证生成的s u b j e c t 对象本身就存放在容器中。在提出一个访问申请时,服务器上都会将 s u b j e c t 对象和实际执行的服务器线程相关联。对于客户端的认证s u b j e c t 对象是在用户提出申请的同 时传递给服务器。 根据用户提交的凭证信息的种类的不同,这两种方式一般都支持一下几种认证方式: 州户名口令认证 l3 第一章j 2 e e 中的安全件基本措施 数字证旧认 川户名口令认让:在用户名口令认证方式巾,_ l j 户把川户标识和口令发送给服务器。服务器检 奇信息的止确性如果止确就赋予用户对受限资源的访问权。安全套接字协议( s s l ) 和i i t t p s 协议

温馨提示

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

评论

0/150

提交评论