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。

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

相关文章推荐

Markdown 语法说明 (简体中文版)

原文转载至:http://wowubuntu.com/markdown/

eXtremeComponents 中文参考文档

eXtremeComponents参考文档 eXtremeComponents 参考文档 Jeff Johnston 版本1.0.0 ...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

flot中文参考文档

Flot Reference flot参考文档 --------------   Consider a call to the plot function: 下面是对绘图函数plot...

Dockerfile 中文参考文档

如何写Dockerfile,Dockerfile 参考文档 | Deepzz's Blog  https://deepzz.com/post/dockerfile-reference.html ...

TinyXML参考文档

TinyXML 2.6.2 参考文档 TinyXML是一个简洁的、可以很容易嵌入别的程序的C++ XML解析器。 能够做什么     简单地说,TinyXML可以解析一个XML文档,并将此文档编...
  • Hefee
  • Hefee
  • 2013-04-08 20:28
  • 2098

Maven 参考文档

Maven1.0已经历了几年的时间,并且作为Ant的替代品已被广大的开发人员所接收,但它并没有在很大程度使开发人员从Ant的 build.xml文件中解脱出来。Maven1.0速度慢并且笨拙,使用起来...

CSS3参考文档

CSS3 动画属性(Animation) 属性 描述 CSS @keyframes 规定动画。 3 ani...

JSF 文档参考

A4J 用户指南 目录 1. 介绍2. 开始使用Ajax4jsf 环境需求下载Ajax4jsf安装简单的 AJAX Echo 项目 JSP 页面数据 Beanfaces-config.xml...

maven参考文档

Maven 参考文档 Maven1.0已经历了几年的时间,并且作为Ant的替代品已被广大的开发人员所接收,但它并没有在很大程度使开发人员从Ant的 build.xml文件中解脱出来。Maven1.0...

Android 常用参考文档

本文记录开发过程中常用的参考数据。
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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