Spring_Security_3.0.1中文参考文档 PARTIII.web应用安全

原创 2015年11月19日 11:14:06

Part III.web应用安全

Chapter 7.安全过滤器链

Spring Security维护了一个过滤器链,每个过滤器拥有特定的功能,过滤器需要服务也会对应添加和删除。过滤器的次序是非常重要的,它们之间都有依赖关系。如果你已经使用了命名空间配置,过滤器会自动帮你配置, 你不需要定义任何Spring Bean,但是有时候你需要完全控制Spring过滤器链, 因为你使用了命名空间没有提供的特性,或者你需要使用你自己自定义的类。

7.1 DelegatingFilterProxy

spring的DelegatingFilterProxy提供了在web.xml和application context之间的联系。

<filter>
<filter-name>myFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>myFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
7.2 FilterChainProxy

现在应该清楚了,你可以声明每个Spring Security过滤器bean,你在application context中需要的。把一个
DelegatingFilterProxy入口添加到web.xml, 确认它们的次序是正确的。 这是一种繁琐的方式,会让web.xml显得十
分杂乱,如果我们配置了太多过滤器的话。我们最好添加一个单独的入口,在web.xml中,然后在application
context中处理实体, 管理我们的web安全bean。这就是FilterChainProxy所做的事情。它使用
DelegatingFilterProxy (就像上面例子中那样),但是对应的class是org.springframework.security.web.
FilterChainProxy。

当我们了解如何使用命名控制配置构建web安全。我们使用一个DelegatingFilterProxy,它的名字
是“springSecurityFilterChain”。你应该现在可以看到FilterChainProxy的名字,它是由命名空间创建的。

7.2.1 绕过过滤器链

通过命名空间,你可以使用filters = "none",来提供一个过滤器bean列表。这会朝向请求模式,使用安全过滤器链
整体。注意任何匹配这个模式的路径不会有任何授权或校验的服务起作用,它们是可以自由访问的。
7.3 过滤器顺序

定义在web.xml里的过滤器的顺序是非常重要的。不论你实际使用的是哪个过滤器,<filter-mapping>的顺序应该像
下面这样:
1. ChannelProcessingFilter,因为它可能需要重定向到其他协议。
2. ConcurrentSessionFilter,因为它不使用SecurityContextHolder功能,但是需要更新SessionRegistry 来从主体中
放映正在进行的请求。
3. SecurityContextPersistenceFilter,这样SecurityContext可以在web请求的开始阶段通过SecurityContextHolder

建立,然后SecurityContext的任何修改都会在web请求结束的时候(为下一个web请求做准备)复制到
HttpSession中。
4. 验证执行机制 - UsernamePasswordAuthenticationFilter, CasAuthenticationFilter, BasicAuthenticationFilter 等等
- 这样SecurityContextHolder 可以被修改,并包含一个合法的 Authentication 请求标志。
5. SecurityContextHolderAwareRequestFilter,如果,你使用它,把一个Spring Security提醒
HttpServletRequestWrapper安装到你的servlet容器里。
6. RememberMeAuthenticationFilter,这样如果之前的验证执行机制没有更新SecurityContextHolder,这个请求
提供了一个可以使用的remember-me服务的cookie,一个对应的已保存的Authentication对象会被创建
出来。
7. AnonymousAuthenticationFilter,这样如果之前的验证执行机制没有更新SecurityContextHolder,会创建一个
匿名Authentication对象。
8. ExceptionTranslationFilter,用来捕捉 Spring Security异常,这样,可能返回一个HTTP错误响应,或者执
行一个对应的AuthenticationEntryPoint。
9. FilterSecurityInterceptor,保护web URI。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Spring Security 使web应用更加安全

一句话介绍Spring Security 是基于Spring AOP和Servlet过滤器的安全框架,安全主要包括两个操作“认证”与“验证”(有时候也会叫做权限控制)开始使用引入类库,例子中使用到的s...

Spring Security3.0.1中文参考文档

  • 2013年07月19日 15:00
  • 245KB
  • 下载

Spring Boot示例 - 4. 使用Spring Boot和Spring Security构建安全的Web应用

一、概述 Spring Boot提供的自动配置和无XML化,使得构建安全的Web应用变得非常容易。本文将演示如何使用Spring Boot和Spring Security构建基于角色的访问控制(RB...

Spring Security 3.0.1 中文官方文档

  • 2013年08月16日 16:53
  • 1.94MB
  • 下载

Spring+Security-3.0.1中文官方文档

  • 2013年08月06日 23:16
  • 1.6MB
  • 下载

spring security使用数据库获取资源、角色和权限保护web应用

在《使用数据库定义资源、角色和权限》中已经定义了该示例的实体关系,本文对其进行实现。web应用中有三种资源。 /main/common.action:具有common角色的用户就可以访问 /ma...

Spring_Security-3.0.1中文官方文档

  • 2012年09月19日 11:09
  • 1.78MB
  • 下载

第9章 保护Web应用--Spring Security 之 HelloWord

概述: Web安全保驾护航,涉及面很广,从前端到数据库都有,先简单用一下Spring Security Demo 来感受一下功能 1、开发环境: JDK 1.8 maven 3.5 ecli...

Spring Security 3.0.1中文官方文档

  • 2015年01月21日 10:33
  • 1.95MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring_Security_3.0.1中文参考文档 PARTIII.web应用安全
举报原因:
原因补充:

(最多只允许输入30个字)