Spring Boot 自动配置 : SecurityAutoConfiguration

SecurityAutoConfigurationSpring Boot提供的安全自动配置类。

它仅在类DefaultAuthenticationEventPublisher存在于classpath上时才进行配置。配置包含如下几个方面 :

  1. 注册安全属性bean SecurityProperties,相应的配置属性来自外部配置项 spring.security,这些属性会被相应的安全配置机制采用;
  2. 注册bean AuthenticationEventPublisher,实现类型使用DefaultAuthenticationEventPublisher;

    仅在类型为AuthenticationEventPublisherbean不存在时才定义;

  3. 导入另外三个安全配置类 :
    • SpringBootWebSecurityConfiguration

      如果用户没有提供自定义的WebSecurityConfigurerAdapter,则提供一个缺省的WebSecurityConfigurerAdapter用于配置Sping Security Web安全。

    • WebSecurityEnablerConfiguration

      Servlet环境中,bean WebSecurityConfigurerAdapter 存在,并且名为springSecurityFilterChainbean不存在的情况下,使用注解@EnableWebSecurity。该配置文件的作用是万一用户忘记了使用注解@EnableWebSecurity,这里保证该注解被使用从而保障springSecurityFilterChain bean的定义。

    • SecurityDataConfiguration

      配置Spring SecuritySpring 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,自动配置)