注:分析的版本是Springsecurity4.3.x.RELEASEjava
因为用Springsecurity来使用单点登陆,因此看了下CasAuthenticationFilter,记录下本身的看后结果吧。git
先上一张图,是CasAuthenticationFilter的类继承图,以下图1所示:github
图1spring
AbstractAuthenticationProcessingFilter中使用了Template模式,定义了通用的模板,而子类来实现特定的方法,下面来看CasAuthenticationFilter的doFilter方法时序图,原图见个人Github。code
图2 CasAuthenticationFilter的doFilter调用时序图blog
图2中的步骤9,会从request中获得ticket的值做为password,_cas_stateful_做为username,而后建立UsernamePasswordAuthenticationToken,并将这个UsernamePasswordAuthenticationToken传递给AuthenticationManager。继承
思考:get
List-1it
// Authentication success if (continueChainBeforeSuccessfulAuthentication) { chain.doFilter(request, response); }