(十四)springboot实战——spring securtity安全框架原理之启动流程

前言

本节内容主要介绍spring securtity的初始化启动流程,spring security是通过@EnableWebSecurity注解来启用的,在@EnableWebSecurity注解中主要引入了WebSecurityConfiguration、SpringWebMvcImportSelector、OAuth2ImportSelector、HttpSecurityConfiguration四大组件来完成spring securtity安全框架的初始化。我们这里会主要着重介绍WebSecurityConfiguration组件和HttpSecurityConfiguration组件,这俩个组件是完成spring security的初始化启动的核心组件。

正文

@EnableWebSecurity注解中会启用四大初始化组件

(十四)springboot实战——spring securtity安全框架原理之启动流程_第1张图片

WebSecurityConfiguration:核心是加载spring securtity的过滤器链springSecurityFilterChain

SpringWebMvcImportSelector:在spring中启动web mvc功能

OAuth2ImportSelector:是用于启用 OAuth2 认证和授权功能

HttpSecurityConfiguration:配置安全规则、访问权限、认证方式等

WebSecurityConfiguration组件分析

①创建一个后置处理器RsaKeyConversionServicePostProcessor的bean对象,用于加密

②创建一个DelegatingApplicationListener监听器,用于将该事件委托于其它监听器处理

③这里主要是初始化SecurityFilterChain中的过滤器,默认有14个

(十四)springboot实战——spring securtity安全框架原理之启动流程_第2张图片

④创建一个AutowiredWebSecurityConfigurersIgnoreParents,自动装配自己的Web 安全配置,不受父容器的影响

⑤注入setFilterChainProxySecurityConfigurer组件,用于初始化SecurityConfigurer和webSecurity

(十四)springboot实战——spring securtity安全框架原理之启动流程_第3张图片

⑥初始化springSecurityFilterChain过滤器链,用于处理web请求的安全认证

(十四)springboot实战——spring securtity安全框架原理之启动流程_第4张图片

⑦创建SecurityExpressionHandler处理器,用于在访问控制表达式中处理安全性表达式,主要用来实现权限授权的处理

 HttpSecurityConfiguration组件分析

①创建一个HttpSecurity对象,用于定义Web 应用程序的安全性规则,这里会使用一些默认配置

(十四)springboot实战——spring securtity安全框架原理之启动流程_第5张图片

②初始化一个认证管理器,默认是内存级别的,一般使用的会使用数据库的方式

 SecurityFilterAutoConfiguration配置类分析

如果容器中存在springSecurityFilterChain过滤器,将该过滤器链注册到DelegatingFilterProxyRegistrationBean这个代理注册器Bean中,方便后续取用

(十四)springboot实战——spring securtity安全框架原理之启动流程_第6张图片

 DelegatingFilterProxyRegistrationBean代理注册器分析

①在web容器启动后,会初始化ServletContext的上下文对象

(十四)springboot实战——spring securtity安全框架原理之启动流程_第7张图片

②在初始化上下文时,会调用DelegatingFilterProxyRegistrationBean代理注册器的getFilter()方法,初始化创建DelegatingFilterProxy对象,并将springSecurityFilterChain的bean名称传给DelegatingFilterProxy过滤器代理类

(十四)springboot实战——spring securtity安全框架原理之启动流程_第8张图片

DelegatingFilterProxy 分析

①获取springSecurityFilterChain的bean对象,

(十四)springboot实战——spring securtity安全框架原理之启动流程_第9张图片

②将Spring Security的过滤器委派给此Bean处理

(十四)springboot实战——spring securtity安全框架原理之启动流程_第10张图片

③调用spring security 委派的代理过滤器FilterChainProxy

(十四)springboot实战——spring securtity安全框架原理之启动流程_第11张图片

④获取spring security过滤器

(十四)springboot实战——spring securtity安全框架原理之启动流程_第12张图片

⑤挨个执行spring security过滤器的doFilter方法

(十四)springboot实战——spring securtity安全框架原理之启动流程_第13张图片

结语

关于spring securtity安全框架原理之启动流程的内容到这里就结束了,我们下期见。。。。。。

你可能感兴趣的:(#,springboot,spring,boot)