在web应用中,spring security是一个filter。而在filter内部,它又自建了一个filter chain(如果不用命名空间,也可以自定义)。spring security按顺序对每个filter进行处理。各filter之间有较大的差异性。与权限验证关系最密切的是FilterSecurityInterceptor。
FilterSecurityInterceptor认证及验权流程:
FilterSecurityInterceptor的类关系图如下。它使用AuthenticationManager做认证(用户是否已登录),使用AccessDecisionManager做验证(用户是否有权限)。
ProviderManager是默认的AuthenticationManager实现类,它不直接进行认证。而是采用组合模式,将认证工作委托给AuthenticationProvider。一般情况下,一组AuthenticationProvider有一个认证成功,就被视为认证成功。ProviderManager关系图如下:
AccessDecisionManager负责验证用户是否有操作权限,它也是采用组合模式。security自带的AccessDecisionManager实现类有三种:AffirmativeBased只要有一个认证处理器认证通过就表示成功;ConsensusBased采用的是多数原则;UnanimousBased采用一票否决制。
相关推荐
在《使用 Acegi 保护 Java 应用程序》系列文章的第一部分中,作者Bilal Siddiqui介绍了Acegi的基本架构和安全过滤器的概念,并通过一个简单的Java企业应用示例展示了基于URL的安全性实现。后续的文章会深入探讨Acegi...
一个简单的Hello World** - **1.1 配置过滤器** - 介绍如何在Spring Security中配置基本的过滤器,以实现对HTTP请求的基本拦截与控制。 - **1.2 使用命名空间** - 讲解如何利用Spring Security提供的命名空间简化...
1. **一个简单的Hello World** - **配置过滤器**:介绍了如何通过Spring Security配置过滤器来实现基本的安全控制。 - **使用命名空间**:展示了如何利用Spring Security的命名空间简化配置过程。 - **完善整个...
- **FilterSecurityInterceptor**:讲解如何通过此拦截器实现细粒度的权限控制。 #### 9. 管理会话 - **添加监听器**:实现会话监听器来监控用户会话的状态变化。 - **添加过滤器**:配置过滤器以增强会话管理功能...
- **SimpleHash-Based Token Approach**:一种简单的哈希令牌存储方式。 - **Persistent Token Approach**:持久化的令牌存储机制。 - **Cross-Site Request Forgery (CSRF)**: - **CSRF 攻击**:解释什么是 ...
接下来,我们简要介绍简单的例子,它实现了第一种方法——全配置方式。在这个例子中,创建了一个Web工程,然后将Spring Security的依赖库添加到项目的WEB-INF\lib目录下,并在`web.xml`中配置了Spring Security的...
本文将详细介绍SpringSecurity的体系结构、配置以及在非数据库环境下进行安全保护的基本步骤。 1. **SpringSecurity的体系结构** - SpringSecurity的核心过滤器是`DelegatingFilterProxy`,它作为代理,控制其他...
- **FilterSecurityInterceptor**:主要的安全拦截器,负责执行访问控制决策。 - **ExceptionTranslationFilter**:异常翻译过滤器,处理未认证或未授权的情况。 - **SecurityContextPersistenceFilter**:保持...
- **FilterSecurityInterceptor**: 核心拦截器,负责执行访问决策。 - **使用命名空间**: Spring Security 支持特定的命名空间来简化 XML 配置文件。 - **完善整个项目**: 包括添加依赖、配置 web.xml 和 security....
8.1. FilterSecurityInterceptor 8.2. ExceptionTranslationFilter 8.2.1. AuthenticationEntryPoint 8.2.2. AccessDeniedHandler 8.3. SecurityContextPersistenceFilter 8.3.1. SecurityContextRepository ...
- **11.11 FilterSecurityInterceptor** - 实现访问控制的核心拦截器。 - **示例代码**: 配置访问控制逻辑。 **12. 管理会话** - **12.1 添加监听器** - 使用监听器来监控会话的变化。 - **示例代码**: 在`...
2.介绍 17 2.1什么是Spring Security? 17 2.2历史 19 2.3版本编号 20 2.4获得Spring安全 21 2.4.1使用Maven 21 Maven仓库 21 Spring框架 22 2.4.2 Gradle 23 Gradle存储库 23 使用Spring 4.0.x和Gradle 24 2.4.3...