admin 管理员组文章数量: 1086019
2024年3月12日发(作者:考事业编哪个辅导机构好)
维普资讯
2007年第2期 水利水电
EJB组件安全性技术的研究
黄伟杰
摘要:本文讨论Java EE平台下开发、部署企业级信息系统所涉及的EJB组件安全性技术,
深入分析EJB组件安全性体系结构,着重研究EJB组件在构建企业级信息系统中所涉及的三
个主要安全性技术问题:验证机制、授权机制和安全性通信。
关键词:验证;授权;JAAS;EJB
1 引言
众所周知,安全性在开发和部署企业级信息系统中是个相当重要的问题【l】。过去,程
序员开发企业应用程序要花一半的时间去处理安全相关的问题,一旦安全机制稍微改变,
就得重新设计安全策略逻辑。组件 的出现很好的解决了这个问题,也促进了企业信息化
系统的建设。近来,随着电子商务和电子致务等应用的兴起,网上交易、网上办公越来越
流行,但是这些系统要求很高的安全性。组件安全性的研究对解决整个信息系统的安全至
关重要,因此探索一种开发能力强和安全性好的组件技术或方法有重要的意义。目前,主
要有三大组件技术:CORBA、COM\DCOM、EJB,主要运用于Microsoh的.Net和Sun的
Java EE平台。本文着重讨论Java EE平台下开发、部署企业级信息系统所涉及的EJB组件
安全性技术。
2 EJB[3 组件安全性体系结构
EJB是基于Java的服务器端组件技术。借助于它,开发者能够轻松构建企业级、分布
式、伸缩性好、安全性好的应用系统。为了熟悉KJB组件技术的安全性,就得先了解EJB
组件的安全性体系结构。如图1,EJB组件安全性涉及到客户端环境、服务器环境、Java
EE EJB容器等各个方面。本文将对影响EJB安全性的三个主要部分:验证机制、授权机
制、安全性通信进行讨论研究。
87
维普资讯
图1 EJB组件安全性体系结构
3验证机制
验证是对用户信息进行验证。在大部分情况下,验证的目的是验明用户的真实身份。
此时,系统需要对用户宣称的身份进行核实。在EJB组件系统中,客户如果没有通过验
证,将无法访问操作到EJB组件。
自从EJB2.0版本开始,EJB组件开发者便能够使用到便捷而又健壮的验证机制。通
过java认证和授权服务 (Java Authentication and Authorization Service,JAAS)中的验证
逻辑,开发者便能够登录并访问到EJB组件中。从Java 2 SDK v1.4开始,JAAS便集成到
JDK中。在Java中,便携的J从S接口使得开发者能够实现用户的验证和授权。简而言
之,JAAS使得用户在对底层使用的安全性系统不知情的情况下能够顺利登录到系统中。
甚至,开发者也可以编写自身的自定义验证模块,并插入到JAAS实现中。这一过程不需
要修改客户代码,从而真正体现了JAAS接口的便携性。如图1,当客户端要访问调用EJB
组件时,用户需要提供安全性凭证给KIB组件,这时候JAAS将判断用户是否有权调用
EJB组件。一旦借助于JAAS完成了用户的认证,客户端将能够安全调用到EJB业务方法,
88
维普资讯
而且用户的安全性身份会传播到目标Java EE应用服务器中。
4授权机制
授权是控制客户对资源的访问,通常,系统需要查找到客户的所属角色,然后基于角
色获得相应的访问权限。Java EE提供两种基于EJB容器的授权方式:编程式授权和声明
性授权。这两种方式都是基于安全性角色的访问控制策略。
安全性角色是表示客户身份集合。为成功地对客户进行EJB业务方法授权,其安全性
身份必须是符合要求的安全性角色。在成功开发KIB组件后,EJB部署者负责将客户身份
关联到正确的安全性角色。显然,使用安全性角色的最大优势在于,不用将具体身份硬编
码在EJB组件代码中。
4.1编程式授权
对于编程式授权而言,需要将安全性检查代码硬编码在EJB组件中。此时业务逻辑同
安全性角色交织在一起。一般编程授权访问可分为三个步骤:
1)编写编程式安全式逻辑。EJB上下文对象提供了两个安全性相关的方法。isCaUero
InRole(String roleName)方法检查当前调用者是否出于特定的安全性角色中,在调用
isCallerInRole()方法时,开发者需要将安全性角色传递于它;getCallerPrincipal()方法
检索当前调用者的安全信息要点,如在一个存储安全信息的数据库中检索标识调用者的名
称,以判断该用户是否被授权。安全性逻辑主要通过编写调用这两个方法实现。
2)声明EJB组件使用的抽象安全性角色。EJB组件开发者必须在部署描述符中声明
EJB组件代码使用的所有安全性角色(比如Administrator)。EJB2.1用<security—role—ref
>和<role-name>元素实现声明,EJB3.0规范仍然支持EJB2.1定义的安全性相关的部
署描述符,增加了Annotation注释,开发者能够更加轻松完成抽象安全角色的定义。
3)将抽象角色映射到实际角色。部署者通过<role—name>和<role—link>元素将抽
象安全性角色映射到实际角色。完成了EJB组件的所有部署内容,便可以在许多企业场合
使用它们。
4.2声明式授权
对于声明式授权而言,EJB容器会自动完成所有的授权检查。
一
般声明式授权步骤:
1)声明方法许可。首先,我们需要为待保护的EJB业务方法声明许可信息。EJB容
器会根据这些方法许可信息,为EJB组件生成安全性检查。有两种声明许可方法,一种借
89
维普资讯
助于Annotation注释声明(@RolesAUowed()),另一种借助于部署描述符声明,它们是
一
样的EJB安全性策略,只不过Annotation注释声明是EJB3.0才有的。
2)声明安全性角色。这同编程式安全性类似。我们需要定义出安全性角色和可选的
角色描述信息。对应两种声明许可方法,也有两种声明安全性角色方法,一种借助
Annotation注释声明,另一种通过部署描述符实现。
4.3使用声明式还是编程式
前面讨论了编程式授权方式和声明式授权方式实现EJB安全策略的方法。对于声明式
安全性,可以实现业务逻辑同具体安全策略的松耦合,客户可以在修改安全性规则后也不
用修改EJB组件代码。在最理想情况下,我们希望EJB组件都能够使用声明式安全性。但
很不幸的是,EJB规范提供的声明式安全性设施还不够完善,它并不支持实例级授权、基
于条件的授权。对于编程式安全性,安全性角色硬编码在EJB组件逻辑中,这种实现方式
显得更为灵活,刚好可以弥补声明式安全性的局限性。在实际应用中,可以结合使用这两
种方式。
5安全性通信
安全性通信是指EJB客户与Java EE服务器之间安全地通信。如图1所示,客户端通
过EJB主接口和EJB远程接口通过网络与服务器端通信。为了确保客户端的个人信息和服
务器端信息的安全性,它们之间必须有通信保护机制。EJB规范提供两种主要的安全性通
信协议,基于SSL的IIOP协议和RMI—IIOP协议
基于SSL的IIOP协议。它能保证集成性、保密性。启动与EJB容器的安全连接之前,
客户要知道服务器听取SSL连接的主机名和端口号,EJB容器的CORBA ORB会将SSL级
的传输信息插入到EJBObject引用中,这些引用采用CORBA IOR格式,而SSL相关信息会
存储在IOR中,并作为标识组件。一旦接收调用请求的EJB容器接收到客户调用请求,其
中运行的ORB会识别出IOR及其包含的标识组件。至此,SSL在后台建立起客户与服务
器问的安全传输通道。
RMI—IIOP协议 。Java RMI—IIOP是指Intemet ORB间协议的Java远程方法调用
(Java Remote Method Invocation over山e Intemet—ORB Protocol,RMI—IIOP)。RMI—IIOP
是Java EE平台的、事实上的网络通信标准,它是基于CORBA开发而成的。RMI—IIOP使
得EJB应用能够与现有CORBA应用进行通信。同时,RMI—IIOP还使得集成现有非Java
开发(比如,C++,COBOL)的应用成为可能,从而节省了企业的投资。
90
维普资讯
6结束语
Java EE是构建企业级信息系统的主要平台,借助于它,开发者能够快速构建分布式、
伸缩性强、可靠的、便携的、安全的服务器端应用。EJB组件是Java EE服务器端重要的
组成部门,EJB组件安全性关系到整个系统的安全性,而EJB组件技术具有可靠的安全性
能,且可以重复使用,部署方便。因此,开发功能强大、安全性好的EJB组件,不仅符合
软件复用的潮流,而且也满足构建功能强大、安全有保障的企业级信息系统的一种趋势。
参考文献
[1]Rahim Adatia,FaizAmi,l<yle Gahhart等著.喻文中,邱仲潘等译.EJB编程指南[M].电子工业出版社.2002.
[2]Markus Voher,Ahaander Schmid。Eberhard Wolf著.张志祥,孙宁,石剑琛译.服务器组件模式一EJB描述的组
件基础设施[M].机械工业出版社.2003.
[3]Rima Patti Sriganesh,Gerald Bmse。Micah Silverman著.罗时飞译.精通EJB3[M].电子工业出版杜,2006.
[4]高
[5]李
月,吕国斌,粱本亮.CORBA、F_jB及其互操作技术.计算机系统应用[J].2005,1:95—97.
慧,陶堵基。李敏.基于JASS的JAVA安全应用研究[J].计算机工程与科学.2005。8:68—70.
91
版权声明:本文标题:EJB组件安全性技术的研究 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1710241445a563944.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论