基于Acegi的Web系统安全架构的设计与实现
2011-04-20周平杜海舟张超
周平,杜海舟,张超
(上海电力学院计算机与信息工程学院,上海 200090)
Java EE框架日益成熟,为企业的开发应用提供了良好服务和支持.随着基于Java EE平台企业级应用程序的日益增加,如何保证Web应用程序安全[1]是信息系统架构师与开发人员亟待解决的重要问题之一.
Acegi可以为企业应用提供强大而灵活的安全访问控制解决方案.Acegi又称为Spring Security,是基于Spring Framework[2]的安全框架,能够和目前主流的Web容器无缝集成.Acegi充分利用Spring的IoC(Inversion of Control)和AOP (Aspect Oriented Programming)功能,提供声明式安全访问控制的功能[3].
通过对Acegi精心配置和编程就可以实现复杂的安全需求.本文主要研究了如何使用Acegi对应用程序实现安全访问控制,以上海市研究生学术网站为例,设计并实现了一个基于Acegi的安全应用系统,并验证了Acegi框架对保护Web应用程序安全、有效、可行.
1 Acegi安全控制粒度及组件
1.1 Acegi安全控制粒度
针对应用程序Acegi提供了3个方面的安全控制策略,可以实现业务对象方法级的安全访问控制粒度.
(1)对URL资源的访问控制URL资源包括JSP页面、Servlet,以及网站图片等.客户端向Web服务器发送一个URL请求,这个请求首先被Acegi的Servlet过滤器拦截.Acegi从配置文件或Web上下文中读取该用户的信息(可以是匿名用户),判断用户是否有权访问目标资源.授权者允许访问,而未授权者将被拒绝.同时将认证成功的用户名、密码、授权等信息存到Acegi的上下文容器中,目的是为了以后对资源访问验证授权时可以直接从Acegi容器中获取此用户的所有授权.在配置文件中定义用户授权访问……
