前面分析了FilterChainProxy执行过程,也对常用的filter逐一深入介绍了,但似乎忽略了Spring Security的核心功能:认证和授权。
虽然在介绍过滤器时也把认证、授权的具体过程深入分析了,但一直没有从整体设计的角度来观察认证、授权过程。
虽然前面介绍了很多过滤器处理过程,但个人认为真正对认证授权起决定影响的过滤器只有三个。
分别是
SecurityContextPersistenceFilter:创建安全上下文SecurityContext
UsernamePasswordAuthenticationFilter:完成认证处理,并把认证通过的实体保存到SecurityContext中
FilterSecurityInterceptor:完成授权处理
上面的UsernamePasswordAuthenticationFilter只是其中一种form-login认证方式,还有很多其他的方式,这里不一一描述了。仅仅选择form-login方式来简化观点的本质。
从下面的过滤器流向图应该能清晰描述这几个过滤器的核心处理过程
认证过程:
授权过程: