【第22期】观点:IT 行业加班,到底有没有价值?

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中文参考文档 1 介绍

1.4.1 项目模块 1.4.1.1 Core:spring-security-core.jar 包含了核心认证和权限控制类和接口,远程支持和基本供应API。持久单独运行的应用,远程客户端,方法(...

Spring Security 3.0.1中文官方文档

  Spring Security 3.0.1中文官方文档, 带有树形导航。      

spring 3.0.1 中文文档

http://wenku.baidu.com/view/0c91a736a32d7375a41780b4.html

Spring Security-3.0.1中文官方文档(翻译版)

这次发布的Spring Security-3.0.1是一个bug fix版,主要是对3.0中存在的一些问题进行修正。文档中没有添加新功能的介绍,但是将之前拼写错误的一些类名进行了修正,建议开发者以这一版本的文档为参考。 另:Spring Security从2010-01-01以后,版本控制从SVN换成了GIT,我们在翻译文档的时候,主要是根据SVN的变化来进行文档内容的比对,这次 换成GIT后,感觉缺少了之前那种文本比对工具,如果有对GIT熟悉的朋友,还请推荐一下文本比对的工具,谢谢。 <span cl

Spring+Security-3.0.1中文官方文档

Spring+Security-3.0.1中文官方文档.pdf 在线地址:http://www.asdtiang.org/wp-content/uploads/2011/09/Spring-Security-3.0
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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