SpringSecurity 学习总结一
在认识 Spring Security 之前,所有的权限验证逻辑都混杂在业务逻辑中,用户的每个操
作以前可能都需要对用户是否有进行该项操作的权限进行判断,来达到认证授权的 目的。
类似这样的权限验证逻辑代码被分散在系统的许多地方,难以维护。AOP(Aspect
Oriented Programming)和 Spring Security 为我们的应用程序很好的解决了此类问题,
正如系统日志,事务管理等这些系统级的服务一样,我们应该将它作为系统一个单独的“切
面”进行管 理,以达到业务逻辑与系统级的服务真正分离的目的,Spring Security 将系统
的安全逻辑从业务中分离出来。
本文代码运行环境:
JDK6.0
spring-framework-2.5.4
spring-security-2.0.0
JavaEE5
Web 容器:
Apache Tomcat6.0
IDE 工具:
Eclipse3.3+MyEclipse6.5
操作系统:
Linux(Fedora 8)
这只是我个人的学习总结而已,还请高手们指出本文的不足之处。
一 Spring Security 简介
这里提到的 Spring Security 也就是被大家广为熟悉的 Acegi Security,2007 年底
Acegi Security 正式成为 Spring Portfolio 项目,并更名为 Spring Security.Spring
Security 是一个能够为基于 Spring 的企业应用系统提供描述性安全访 问控制解决方案的
安全框架。它提供了一组可以在 Spring 应用上下文中配置的 Bean,充分利用了 Spring
IoC(依赖注入,也称控制反转)和 AOP(面向切面编程)功能,为应用系统提供声明式
的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的 工作。
通过在许多项目中实践应用以及社区的贡献,如今的 Spring Security 已经
成为 Spring Framework 下最成熟的安全系统,它为我们提供了强大而灵活的
企业级安全服务,如:
认证授权机制
Web 资源访问控制
业务方法调用访问控制
领域对象访问控制 Access Control List(ACL)
单点登录(Central Authentication Service)
X509 认证
信道安全(Channel Security)管理等功能
当保护 Web 资源时,Spring Security 使用 Servlet 过滤器来拦截 Http 请
求进行身份验证并强制安全性,以确保 WEB 资源被安全的访问。如下图是
Spring Security 的主要组件图(摘自《Spring in Action》):