Spring Security详解
发布时间:
SpringSecurity详解
在认识SpringSecurity之前,所有的权限验证逻辑都混杂在业务逻辑中,用户的每个操作以前可能都需要对用户是否有进行该项操作的权限进行判断,来达到认证授权的目的。类似这样的权限验证逻辑代码被分散在系统的许多地方,难以维护。AOP(AspectOrientedProgramming)和SpringSecurity为我们的应用程序很好的解决了此类问题,正如系统日志,事务管理等这些系统级的服务一样,我们应该将它作为系统一个单独的“切面”进行管理,以达到业务逻辑与系统级的服务真正分离的目的,SpringSecurity将系统的>>>>安全逻辑从业务中分离出来。
本文代码运行环境:JDK6.0
spring-framework-2.5.4spring-security-2.0.0
>>>>JavaEE5
Web容器:ApacheTomcat6.0IDE工具:
Eclipse3.3+MyEclipse6.5操作系统:Linux(Fedora8)
这只是我个人的学习总结而已,还请高手们指出本文的不足之处。一
SpringSecurity简介
这里提到的SpringSecurity也就是被大家广为熟悉的AcegiSecurity,
2007年底AcegiSecurity正式成为SpringPortfolio项目,并更名为SpringSecurity.SpringSecurity是一个能够为基于Spring的企业应用系统提供描述性>>>>安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了SpringIoC(依赖注入,也称控制反转)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。
通过在许多项目中实践应用以及社区的贡献,如今的SpringSecurity
已经成为SpringFramework下最成熟的安全系统,它为我们提供了强大而灵活的企业级安全服务,如:
认证授权机制Web资源访问控制业务方法调用访问控制
领域对象访问控制AccessControlList(ACL)单点登录(CentralAuthenticationService)X509认证
信道安全(ChannelSecurity)管理等功能
当保护Web资源时,SpringSecurity使用Servlet过滤器来拦截Http
请求进行身份验证并强制安全性,以确保WEB资源被安全的访问。如下图是SpringSecurity的主要组件图(摘自《Springin>>>>Action》):
图1SpringSecurity的基本组件
无论是保护WEB资源还是保护业务方法或者领域对象,SpringSecurity
都的通过上图中的组件来完成的。本文主要阐述如何使用SpringSecurity对WEB应用程序的资源进行安全访问控制,并通过一个简单的实例来对SpringSecurity提供的各种过滤器的功能和配置方法进行描述。二
保护Web资源
SpringSecurity提供了很多的过滤器,它们拦截Servlet请求,并将
这些请求转交给认证处理过滤器和访问决策过滤器进行处理,并强制安全性,认证用户身份和用户权限以达到保护Web资源的目的。对于Web资源我们大约可以
只用6个过滤器来保护我们的应用系统,下表列出了这些安全过滤器的名称作用以及它们在系统中的执行顺序:
>>>>>过
滤
器
作
确保请求是在安全通道(HTTP和HTTPS)之上传输的接受认证请求,并将它们转交给认证管理器进行身份验证
接受CAS服务票据,验证YaleCAS(单点登录)是否已经对用户进行了认证处理使用HTTP基本认证的身份验证请求
处理认证信息在请求间的存储(比如在HTTP会话中)
确保用户己经认证,并且满足访问一个受保护Web>>>>资源的权限需求
用
通道处理过滤器认证处理过滤器CAS处理过滤器HTTP基本授权过滤器集成过滤器安全强制过滤器
接下来,通过一个实例来说明它们的具体使用方法和如何在Spring中进
行配置。
1
建立SpringSecurity项目
首先在MyEclipse中创建一个WebProject,并使用