论文部分内容阅读
J2EE(Java2 Platform Enterprise Edition)是一个基于Java2平台独立的、可移植的、多用户的、安全的企业级平台标准,它克服了传统Client/Server模式的弊病,迎合了Browser/Server架构的潮流,大大简化了企业级应用的开发、部署和管理。然而,人们在充分利用J2EE强大特性的同时,也逐渐发现了一些问题,尤其是使用EJB(Enterprise Java Bean)后使得中小型企业应用中的开发和维护成本提高,复杂度增加。面对这种情况,近几年逐渐涌现出了一些优秀的开源框架,它们试图在J2EE开发领域引入一些新的思想和方法,以期解决使用传统EJB组件所带来的问题。轻量级的Spring框架就是其中的典型代表。控制反转(Inversion of Control,IoC)、面向切面编程(Aspect-oriented programming,AOP)等一大批新的技术和概念的提出,彻底改变了企业应用开发的设计和模式。 在企业应用环境中,安全是一个永无止境的目标,对所有企业应用而言,获取一个全面的,系统级的安全控制解决方案无疑是至关重要的。在企业安全架构这一领域,AOP的使用降低了权限的开发和管理与系统框架和功能的耦合度,使得用户的认证和授权操作可以独立于整个系统的核心业务逻辑,并能保证最大程度的可移植性和扩展性。建立在Spring框架基础之上的Acegi(SpringSecurity)安全架构,就是使用这一技术的代表。借助于Spring的IoC和AOP技术,Acegi几乎可以做到对系统代码的零侵入来满足企业应用中多种多样的权限方面的需求,在企业应用开发中正在得到广泛的应用和实践。 论文首先分析了J2EE安全模型的局限性,并详细介绍了Spring轻量级框架和构建在它之上的Acegi安全架构,系统分析了Acegi的实现机制以及在实际应用中的不足之处。在此研究的基础上,通过对Acegi进行适当的扩展和改进,尝试构建一个通用性好的、便于配置和管理的、真正贴近企业开发实际的安全控制架构。 本论文主要内容共五章,第一章分析了企业级安全的基本需求,介绍了J2EE平台对用户认证和授权的支持以及J2EE安全架构的局限性;第二章分析了轻量级Spring框架的核心技术,重点介绍了IoC和AOP技术在降低程序的耦合度、把安全等具有横切性质的关注点同核心业务逻辑相分离等方面给出的优美解决方案;第三章分析了Acegi安全架构的实现机制和在实际应用中的不足之处,提出了改进思路;第四章介绍了基于角色的访问控制(Role-Based AccessControl,RBAC)模型,并在对Acegi中引入RBAC模型的利弊分析基础上,提出了在Acegi中采用一种折衷的权限管理方案。该方案把对Web资源和业务方法的保护同对领域对象的保护隔离开来,采用不同的访问控制模型,具体说就是对Web资源和业务方法的保护采用简化的RBAC模型,而对领域对象的保护采用ACL(Access Control List)模型。这样,不但提高了系统权限校验的效率、加快了系统的响应速度,而且对领域对象的保护提供了极大的灵活性;第五章是对Acegi具体的改进和扩展,改进的原则是只对Acegi中不符合企业应用中具有普遍性的需求的地方进行扩展,而尽量不改动其余部分来实现通用的权限控制架构,以求能更好地适应各式各样的企业应用。 论文的主要工作和特色如下: 1.在改进后的权限控制架构中,对Web资源和业务方法的保护采用了简化的RBAC模型。所有安全控制信息统一存放于RDBMS中,便于实时联机管理和维护,减轻了系统管理员的负担。 2.在改进后的权限控制架构中,构建了更为合理有效的缓存使用体系,提出了两种缓存使用策略:永久缓存和可失效缓存。从而加快了认证和授权的速度,提高了认证和授权效率。 3.在用户认证模块中集成了Captcha服务,保护了用户登录界面。 4.在Acegi原有的资源类型(WEB、METHOD类型)的基础上引入了新的资源类型(TAG类型),并提供了基于TAG资源授权控制的TagLib,从而可以根据TAG资源所对应的权限和当前用户具有的权限来决定页面元素的显示,更便于表现层的使用。 5.提供了B/S结构的联机授权管理模块,方便管理员进行权限管理。