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






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

相关文章推荐

Chapter 2 User Authentication, Authorization, and Security(8):创建映射到登录名的数据库用户

登录名用于授权并访问服务器资源,如果需要访问数据库,需要对数据库内部的用户进行映射。用户是数据库级别的安全主体,访问数据库资源是授予给用户,而不是登录名。

Spring Security中代理过滤器是通过FilterChain如何工作的

我们在搭建Spring Security框架的第一步配置是在项目的web.xml添加代理过滤器,配置如下 springSecurityFilterChain org.springf...

spring security3.x学习(3)_初探过滤器机制和auto-config用法

我们了解一下验证的过程 、首先用户发起一个请求、 这时候,认证管理器进行拦截,验证用户发起请求时的一些凭证信息,未通过验证信息审核的那么返回给用户,通过审核的,那么继续进行请求访问,访问页面之前,会被...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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