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