gpt4 book ai didi

spring-boot - 在 Spring Security 中使用 HttpSecurity 和 AuthenticationManagerBuilder 注册身份验证提供程序有什么区别?

转载 作者:行者123 更新时间:2023-12-03 23:14:43 26 4
gpt4 key购买 nike

WebSecurityConfigurerAdapter 提供两个覆盖如下:
protected void configure(AuthenticationManagerBuilder auth)

protected void configure(HttpSecurity http)
两者 HttpSecurityAuthenticationManagerBuilder为 authenticationProviders 提供注册。将我的提供者注册到一个和另一个之间有什么区别吗?

我还在 @SpringBootApplication(exclude = SecurityAutoConfiguration.class) 中使用 Spring boot 2.1完全关闭他们的自动配置。

最佳答案

来自 Spring Security Architecture

The main strategy interface for authentication is AuthenticationManager [...]

The most commonly used implementation of AuthenticationManager is ProviderManager, which delegates to a chain of AuthenticationProvider instances. An AuthenticationProvider is a bit like an AuthenticationManager [...]

A ProviderManager can support multiple different authentication mechanisms in the same application by delegating to a chain of AuthenticationProviders. If a ProviderManager doesn’t recognise a particular Authentication instance type it will be skipped.

A ProviderManager has an optional parent, which it can consult if all providers return null. If the parent is not available then a null Authentication results in an AuthenticationException.



enter image description here

一般而言 WebSecurityConfigurerAdapterHttpSecurity 提供配置除了 Filter的配置(如 UsernamePasswordAuthenticationFilterLogoutFilter 等),它还创建和配置(添加 AuthenticationProvider s 和父级 AuthenticationManager ) AuthenticationManager s 在 HttpSecurity通过使用 AuthenticationManagerBuilder .
WebSecurityConfigurerAdapter将只创建一个 AuthenticationManagerHttpSecurity .然而 AuthenticationManager有自己的 AuthenticationProviders和它自己的可选父级 AuthenticationProvider .当你在做 http.authenticationProvider(...)您正在添加新 AuthenticationProviderAuthenticationManager属于那个 http .通过使用 configure(AuthenticationManagerBuilder auth)您正在配置 AuthenticationManager这是 AuthenticationManager 的父级属于那个特定的 HttpSecurity .

Spring 为该特定 AuthenticationManager 的父级提供默认配置,但通过使用 configure(AuthenticationManagerBuilder auth)您正在拒绝 spring 的配置以支持您的(身份验证)。

关于spring-boot - 在 Spring Security 中使用 HttpSecurity 和 AuthenticationManagerBuilder 注册身份验证提供程序有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53404327/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com