-
Spring Security3源码分析
收藏目前spring security3的教程很多,但是一直没有全面深入的源码分析资料。本专栏将从配置、自定义标签解析、各个过滤器执行过程结合源码一步一步分析。最后再讲解各个扩展点的自定义、SSL以及与CAS支持等高级主题。
最近更新文章
Spring Security3源码分析-CAS支持
Spring Security3对CAS的支持主要在这个spring-security-cas-client-3.0.2.RELEASE.jar包中 Spring Security和CAS集成的配置资料很多。这里讲解的比较详细 http://lengyun3566.iteye.com/blog/1358323
配置方面,主要为下面的部分:
<security:http auto-conf ...
Spring Security3源码分析-SSL支持
Sping Security3对于SSL的支持仅仅表现在对需要拦截的url(标签intercept-url)设置requires-channel=https属性。
如果一个url设置了requires-channel为https,那么该url在http的访问会直接重定向到https的通道中去。后面再具体分析。
首先需要在应用中配置SSL的支持,具体配置方法可参考
http://lengyun3 ...
Spring Security3源码分析-认证授权分析
前面分析了FilterChainProxy执行过程,也对常用的filter逐一深入介绍了,但似乎忽略了Spring Security的核心功能:认证和授权。 虽然在介绍过滤器时也把认证、授权的具体过程深入分析了,但一直没有从整体设计的角度来观察认证、授权过程。 虽然前面介绍了很多过滤器处理过程,但个人认为真正对认证授权起决定影响的过滤器只有三个。 分别是 SecurityContextPersist ...
Spring Security3源码分析-Filter链排序分析
通过前面Spring Security提供的各种Filter的分析,大体上知道每个Filter具体的用途了。
Spring Security一共提供了20个Filter,我目前只分析了13个(如果http的auto-config="true",那默认的filter列表都包含在这13个里面了),另外7个在后面的源码分析中碰到时会逐个讲解。
在分析http标签时,已经提到filter ...
Spring Security3源码分析-RequestCacheAwareFilter分析
RequestCacheAwareFilter过滤器对应的类路径为
org.springframework.security.web.savedrequest.RequestCacheAwareFilter
这个filter的用途官方解释是
用于用户登录成功后,重新恢复因为登录被打断的请求
这个解释也有几点需要说明
被打算的请求:简单点说就是出现了AuthenticationException、 ...
Spring Security3源码分析-ExceptionTranslationFilter分析
ExceptionTranslationFilter过滤器对应的类路径为
org.springframework.security.web.access.ExceptionTranslationFilter
从类名就看出这个过滤器用于异常翻译的。但是从这个过滤器在filterchain中的位置来看,它仅仅处于倒数第三的位置(这个filter后面分为是FilterSecurityInterceptor ...
Spring Security3源码分析-SessionManagementFilter分析-下
很多spring security3资料在介绍session的并发控制都要求配置HttpSessionEventPublisher的监听器,如下
<listener>
<listener-class>
org.springframework.securit ...
Spring Security3源码分析-SessionManagementFilter分析-上
SessionManagementFilter过滤器对应的类路径为
org.springframework.security.web.session.SessionManagementFilter
这个过滤器看名字就知道是管理session的了,http标签是自动配 ...
Spring Security3源码分析-AnonymousAuthenticationFilter分析
AnonymousAuthenticationFilter过滤器对应的类路径为
org.springframework.security.web.authentication.AnonymousAuthenticationFilter
AnonymousAuthenticationFilter过滤器是在UsernamePasswordAu ...
Spring Security3源码分析-BasicAuthenticationFilter分析
BasicAuthenticationFilter过滤器对应的类路径为
org.springframework.security.web.authentication.www.BasicAuthenticationFilter
Basic验证方式相比较而言用的不是太多。spring security也支持basic的方式,配置如下
<security:http auto-config= ...
Spring Security3源码分析-FilterSecurityInterceptor分析
FilterSecurityInterceptor过滤器对应的类路径为
org.springframework.security.web.access.intercept.FilterSecurityInterceptor
这个filter是filterchain中比较复杂,也是比较核心的过滤器,主要负责授权的工作
在看这个filter源码之前,先来看看spring是如何构造filter这个bean ...
Spring Security3源码分析-SecurityContextHolderAwareRequestFilter分析
SecurityContextHolderAwareRequestFilter过滤器对应的类路径为
org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter
从类名称可以猜出这个过滤器主要是包装请求对象request的,看源码
public void doFilter(Ser ...
Spring Security3源码分析-RememberMeAuthenticationFilter分析
RememberMeAuthenticationFilter过滤器对应的类路径为
org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter
看主要的doFilter方法
public void doFilter(ServletRequest req, Servlet ...
Spring Security3源码分析-UsernamePasswordAuthenticationFilter分析
UsernamePasswordAuthenticationFilter过滤器对应的类路径为
org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter
实际上这个Filter类的doFilter是父类AbstractAuthenticationProcessingFilter的
...
Spring Security3源码分析-LogoutFilter分析
LogoutFilter过滤器对应的类路径为
org.springframework.security.web.authentication.logout.LogoutFilter
通过这个类的源码可以看出,这个类有两个构造函数
public LogoutFilter(LogoutSuccessHandler logoutSuccessHandler, LogoutHandler... ...
Spring Security3源码分析-SecurityContextPersistenceFilter分析
通过观察Filter的名字,就能大概猜出来这个过滤器的作用,是的,持久化SecurityContext实例。这个过滤器位置是;
org.springframework.security.web.context.SecurityContextPersistenceFilter
废话不说,看源码
public void doFilter(ServletRequest req, Servlet ...
Spring Security3源码分析-FilterChainProxy执行过程分析
通过FilterChainProxy的初始化、自定义标签的分析后,Spring Security需要的运行环境已经准备好了。
这样当用户访问应用时,过滤器就开始工作了。web.xml配置的Filter:org.springframework.web.filter.DelegatingFilterProxy就不介绍了,该类仅仅是初始化一个FilterChainProxy,然后把所有拦截的请求交给Fi ...
Spring Security3源码分析-authentication-manager标签解析
讲解完http标签的解析过程,authentication-manager标签解析部分就很容易理解了
authentication-manager标签在spring的配置文件中的定义一般如下
<authentication-manager alias="authenticationManager">
<authentication-provider ...
Spring Security3源码分析-http标签解析
在FilterChainProxy初始化的过程中,大概描述了标签解析的一些步骤,但不够详细
<http auto-config="true">
<remember-me key="workweb" token- ...