AuthenticationManagerBuilder

AuthenticationManagerBuilder

所以我正在研究Spring Security的实现。我遇到了一段我无法理解的代码。因此,根据文档,当我们要自定义Spring使用的AuthenticationManager时,需要重写以下方法。

protected void configure(AuthenticationManagerBuilder auth) throws java.lang.Exception

我的问题是谁在调用此方法并在此处传递AuthenticationManagerBuilder实例。
我看到的工作示例不会创建/公开任何AuthenticationManagerBuilder bean。

另外,我在文档中看到以下内容,


  受保护的AuthenticationManager authenticationManager()
                                                 引发java.lang.Exception获取要使用的AuthenticationManager。
  
  默认值
  策略是如果configure(AuthenticationManagerBuilder)方法是
  重写以使用传入的AuthenticationManagerBuilder。
  否则,请按类型自动连接AuthenticationManager。


重写的方法是一个无效方法,这可能就是为什么我对正在做的事情/应该做的事情感到更加困惑的原因。

任何帮助/指针都受到高度赞赏。我知道它有效,但似乎无法弄清楚。
非常感谢。

最佳答案

假设以下是您遇到的代码

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.authenticationProvider(MyAuthenticationProvider);
    }
}


注意


WebSecurityConfigurerAdapter提供了方便的基础
用于创建WebSecurityConfigurer实例的类。
WebSecurityConfigurerAdapter实现是一个
Configuration,因为它带有@EnableWebSecurity注释


这里

@EnableWebSecurity使用@EnableGlobalAuthentication进行元注释

@Retention(value=RUNTIME)
 @Target(value=TYPE)
 @Documented
 @Import(value={WebSecurityConfiguration.class,org.springframework.security.config.annotation.web.configuration.SpringWebMvcImportSelector.class,org.springframework.security.config.annotation.web.configuration.OAuth2ImportSelector.class})
 @EnableGlobalAuthentication
 @Configuration
public @interface EnableWebSecurity


和@EnableGlobalAuthentication导入AuthenticationConfiguration

@Retention(value=RUNTIME)
 @Target(value=TYPE)
 @Documented
 @Import(value=AuthenticationConfiguration.class)
 @Configuration
public @interface EnableGlobalAuthentication


AuthenticationConfiguration具有以下代码,用于将AuthenticationManagerBuilder注册为Bean

@Bean
public AuthenticationManagerBuilder authenticationManagerBuilder(
            ObjectPostProcessor<Object> objectPostProcessor, ApplicationContext context) {
        ...
    }

关于java - Spring Security:谁将AuthenticationManagerBuilder传递给WebSecurityConfigurerAdapter配置方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59118739/

10-09 03:54