SecurityAutoConfiguration是Spring Boot提供的安全自动配置类。
它仅在类DefaultAuthenticationEventPublisher存在于classpath上时才进行配置。配置包含如下几个方面 :
- 注册安全属性
bean SecurityProperties,相应的配置属性来自外部配置项spring.security,这些属性会被相应的安全配置机制采用; - 注册
bean AuthenticationEventPublisher,实现类型使用DefaultAuthenticationEventPublisher;仅在类型为
AuthenticationEventPublisher的bean不存在时才定义; - 导入另外三个安全配置类 :
SpringBootWebSecurityConfiguration如果用户没有提供自定义的
WebSecurityConfigurerAdapter,则提供一个缺省的WebSecurityConfigurerAdapter用于配置Sping Security Web安全。WebSecurityEnablerConfiguration在
Servlet环境中,bean WebSecurityConfigurerAdapter存在,并且名为springSecurityFilterChain的bean不存在的情况下,使用注解@EnableWebSecurity。该配置文件的作用是万一用户忘记了使用注解@EnableWebSecurity,这里保证该注解被使用从而保障springSecurityFilterChain bean的定义。SecurityDataConfiguration配置
Spring Security跟Spring Data的整合,仅在Spring Security Data被使用时才启用。具体来讲,是在SecurityEvaluationContextExtension类存在于classpath(Spring Security Data包的一个类)上并且容器中不存在该类型的bean时,向容器注册一个这样的bean。
源代码
源代码版本 : spring-boot-autoconfigure 2.1.3.RELEASE
package org.springframework.boot.autoconfigure.security.servlet;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.security.SecurityDataConfiguration;
import org.springframework.boot.autoconfigure.security.SecurityProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.security.authentication.AuthenticationEventPublisher;
import org.springframework.security.authentication.DefaultAuthenticationEventPublisher;
// 这是一个配置类
@Configuration
// 仅在类 DefaultAuthenticationEventPublisher 存在于 classpath 上时才启用
@ConditionalOnClass(DefaultAuthenticationEventPublisher.class)
// 注册配置属性 bean :
// 名称 : spring.security-org.springframework.boot.autoconfigure.security.SecurityProperties
// 类型 SecurityProperties
// 对应属性前缀 : spring.security
@EnableConfigurationProperties(SecurityProperties.class)
// 导入另外三个配置文件
@Import({ SpringBootWebSecurityConfiguration.class, WebSecurityEnablerConfiguration.class,
SecurityDataConfiguration.class })
public class SecurityAutoConfiguration {
// 定义一个认证事件发布器bean,仅在类型为 AuthenticationEventPublisher 的bean不
// 存在于容器上时才生效
@Bean
@ConditionalOnMissingBean(AuthenticationEventPublisher.class)
public DefaultAuthenticationEventPublisher authenticationEventPublisher(
ApplicationEventPublisher publisher) {
// 所定义的认证事件发布器bean类型使用 DefaultAuthenticationEventPublisher
return new DefaultAuthenticationEventPublisher(publisher);
}
}

博客围绕Spring Boot安全自动配置类展开,介绍其配置条件,包括仅在特定类存在时配置。配置内容有注册安全属性、导入其他安全配置类等,还提及与其他组件整合的启用条件,版本为spring - boot - autoconfigure 2.1.3.RELEASE。
1300





