Spring_Security_3.0.1中文参考文档 Chapter 8.核心安全过滤器

原创 2015年11月19日 12:33:54

Chapter 8.核心安全过滤器

8.1 FilterSecurityInterceptor

我们也已经在命名空间中使用过它, <intercept-url>元素的结合在内部对它进行了配置。 现在我们会看如何精确的配置它,使用FilterChainProxy, 通过结合ExceptionTranslationFilter过滤器。 一个典型的配置例子如下:

<span style="font-size:18px;"><bean id="filterSecurityInterceptor"
class="org.springframework.security.intercept.web.FilterSecurityInterceptor">
<property name="authenticationManager" ref="authenticationManager"/>
<property name="accessDecisionManager" ref="accessDecisionManager"/>
<property name="securityMetadataSource">
<security:filter-security-metadata-source>
<security:intercept-url pattern="/secure/super/**" access="ROLE_WE_DONT_HAVE"/>
<security:intercept-url pattern="/secure/**" access="ROLE_SUPERVISOR,ROLE_TELLER"/>
</security:filter-security-metadata-source>
</property>
</bean></span>

8.2 ExceptionTranslationFilter

ExceptionTranslationFilter处在FilterSecurityInterceptor的上面。 它不执行任何真正的安全控制,但是处理安全监听器抛出的一场, 提供对应的HTTP响应。

<span style="font-size:18px;"><bean id="exceptionTranslationFilter"
class="org.springframework.security.web.access.ExceptionTranslationFilter">
<property name="authenticationEntryPoint" ref="authenticationEntryPoint"/>
<property name="accessDeniedHandler" ref="accessDeniedHandler"/>
</bean>
<bean id="authenticationEntryPoint"
class="org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint">
<property name="loginFormUrl" value="/login.jsp"/>
</bean>
<bean id="accessDeniedHandler"
class="org.springframework.security.web.access.AccessDeniedHandlerImpl">
<property name="errorPage" value="/accessDenied.htm"/>
</bean></span>
8.2.1 AuthenticationEntryPoint

AuthenticationEntryPoint会被调用, 在用户请求一个安全HTTP资源,但是他们还没有被认证。一个对应的
AuthenticationException或 AccessDeniedException会被抛出, 由一个安全监听器在下面的调用栈中,触发入口点的 commence方法。这执行展示对应的响应给用户, 这样认证可以开始。我们这里使用的是 LoginUrlAuthenticationEntryPoint,它会把请求 重定向到另一个不同的URL(一般是一个登陆页面)。

8.2.2 AccessDeniedHandler

如果一个AccessDeniedException被抛出了, 一个用户已经被认证,然后这意味着操作已经被尝试了,而他们没有足够的权
限, 这种情况下,ExceptionTranslationFilter会调用第二个策略, AccessDeniedHandler。默认下,一个 AccessDeniedHandlerImpl会被使用,它只发送一个403(拒绝访问) 响应到客户端。可选的,你可以确切配置一个实例(像上面的例子)然后设置一个错误页URL 它会把请求跳转到错误页。

8.3 SecurityContextPersistenceFilter

使用FilterChainProxy配置bean:

<bean id="securityContextPersistenceFilter"
class="org.springframework.security.web.context.SecurityContextPersistenceFilter"/><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">,这个过滤器有两个主要的任务,它负责保存在不同的HTTP请求之间SecurityContext,负责清理在请求完</span><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">成时SecurityContextHolder。 清理上下文中保存的ThreadLocal是很基本的,因为它可能 是servlet容器线程池中的一个替换的</span><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">thread,这样spring security对应一个特定用户可能出现冲突。这个线程可能被下一个阶段使用,执行操作的时候就会使</span><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">用错误的证书。</span>
8.3.1 SecurityContextReposity

读取和保存安全上下文的任务被委托给一个单独的策略接口:

public interface SecurityContextRepository {
SecurityContext loadContext(HttpRequestResponseHolder requestResponseHolder);
void saveContext(SecurityContext context, HttpServletRequest request,
HttpServletResponse response);
}
HttpRequestResponseHolder是一个简单的容器,为了进入的请求和相应对象, 允许使用封装类替换它们。返回的内容会被发送给过滤器链。
默认的实现是HttpSessionSecurityContextRepository, 它会把安全上下文保存为一个HttpSession的属性。 [7]. 这个实现中最重要的配置参数是allowSessionCreation属性, 默认是true,因此允许类创建会话,如果它需要保存spring context 为一个认证用户(它不会创建一个除非认证已经执行,security context的内容发生改变)。如果你不想要创建会话,你可以把这个属性设置为false:
<bean id="securityContextPersistenceFilter"
class="org.springframework.security.web.context.SecurityContextPersistenceFilter">
<property name='securityContextRepository'>
<bean class='org.springframework.security.web.context.HttpSessionSecurityContextRepository'>
<property name='allowSessionCreation' value='false' />
</bean>
</property>
</bean>
8.4 Username






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

spring_security_3.0.1中文参考文档PartII结构和实现

PartII.结构和实现 chapter 5.技术概述 5.1 运行环境 5.2 核心组件 5.2.1 SecurityContextHolder,SecurityContext和Authentica...
  • u010819416
  • u010819416
  • 2015年11月18日 17:56
  • 168

Mongoose学习参考文档——基础篇

Mongoose学习参考文档 前言:本学习参考文档仅供参考,如有问题,师请雅正 一、快速通道 1.1 名词解释 Schema : 一种以文件形式存储的数据库模型骨架,不...
  • u011368551
  • u011368551
  • 2016年08月08日 10:54
  • 544

Ruby官方文档翻译(Ruby官方文档中文版)

说明本文试图翻译Ruby官方文档,ruby版本:2.3.0,官方文档参考:http://ruby-doc.org/core-2.3.0/。进度1,Object类正文约定object 对象 clas...
  • liuk10
  • liuk10
  • 2016年03月27日 21:50
  • 497

Spring 4.x官方参考文档中文版——第六部分 Web技术

基于Spring 4.2.5官方文档,现在MVC部分已经翻译完毕,现在重新优化翻译并审校,制作离线文档中。制作完成后将发布于博客。...
  • HermaeuxMora
  • HermaeuxMora
  • 2016年05月18日 09:18
  • 6843

struts ---核心过滤器理解---

struts2---核心控制器 1介绍 struts核心过滤器FilterDispatcher介绍 FilterDispatcher功能介绍 FilterDispatcher是st...
  • llziseweiqiu
  • llziseweiqiu
  • 2017年12月10日 17:26
  • 95

Spring_Security_3.0.1中文参考文档 2 Security命名空间配置

2 Security命名空间配置 2.1 介绍 命名空间元素可以简单的配置单个bean,或使用更强大的,定义个备用配置语法,这可以更加紧密的匹配问题域,隐藏用户背后的复杂性。简单元素可能隐藏事实,多种...
  • u010819416
  • u010819416
  • 2015年11月05日 17:36
  • 157

制作AS3语言参考FP26_AIR26_Flex4.7中文API帮助手册chm版下载

今天上adobe官方找查资料,感觉速度太慢,半天显示不出来,比较烦。 干脆就马上找个能用的离线帮助手册,方便随时翻阅。 在csdn上找了一下,发现很多手册已经是3年以前的了?吃惊~...
  • sjt223857130
  • sjt223857130
  • 2017年07月19日 18:30
  • 320

SpringBoot2.x参考指南(中文版) 第一部分 SpringBoot文档介绍

本部分为该文档提供一个概述。你可以把它当作整个文档的索引。你可以顺序浏览本文档,也可以跳过某些章节,如果你对它不感兴趣的话。1.关于本文档 本文档提供有html,pdf和epub的格式。你可以从doc...
  • HITLiuXiaodong
  • HITLiuXiaodong
  • 2016年11月21日 15:21
  • 1622

HttpClient 中文文档

来自于:百度文档 HttpClient-4.0.1 官方教程 HttpClient不是一个浏览器,它是一个客户端HTTP传输类库。HttpClient作用是传输和接收HTTP消息。HttpClie...
  • xiaoyu19910321
  • xiaoyu19910321
  • 2016年12月05日 15:57
  • 2969

PyQt5中文基础教程1 简介

PyQt5 简介 本教程的目的是带领你入门PyQt5。教程内所有代码都在Linux上测试通过。PyQt4 教程是PyQt4的教程,PyQt4是一个Python(同时支持2和3)版的Qt库。 关于 ...
  • xfyangle
  • xfyangle
  • 2017年07月10日 10:05
  • 1487
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring_Security_3.0.1中文参考文档 Chapter 8.核心安全过滤器
举报原因:
原因补充:

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