gpt4 book ai didi

java - SpringSecurity BasicAuthenticationFilter 与自定义 AuthenticationManager

转载 作者:太空宇宙 更新时间:2023-11-04 10:00:33 29 4
gpt4 key购买 nike

对于BasicAuthenticationFilter,我正在尝试注入(inject)我自己的AuthenticationManager。但是当我调试 Startup 时,我总是发现类 BasicAuthenticationFilter.java 没有使用我的 AuthenticationManager。

如何将其传递到 BasicAuthenticationFilter 中?

我正在使用 SpringBoot 2.1.0 和 Spring-Security-Oauth2 2.0.1

AuthorizationConfiguration.java

@Configuration
@EnableAuthorizationServer
public class AuthorizationConfiguration extends
AuthorizationServerConfigurerAdapter {

@Autowired
private AuthenticationManager authenticationManager;

@Autowired
@Qualifier("passwordEncoder")
private PasswordEncoder passwordEncoder;

@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
System.out.println(passwordEncoder.encode("SECRET"));
clients
.inMemory()
.withClient("clientapp")
.authorizedGrantTypes("client_credentials")
.authorities("USER")
.scopes("read", "write")
.secret(passwordEncoder.encode("SECRET"));

}

@Override
public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {
security.tokenKeyAccess("permitAll()");
}

@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints.authenticationManager(authenticationManager);
}
}

WebSecurityConfiguration.java

@Configuration
@EnableWebSecurity
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter{

@Override
@Bean(name = BeanIds.AUTHENTICATION_MANAGER)
@Primary
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManager();
}


@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder(16);
}

@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring()
.antMatchers(ResourceConfiguration.TEST_PATHS);
}

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
DaoAuthenticationProvider daoAuth = new DaoAuthenticationProvider();
daoAuth.setPasswordEncoder(passwordEncoder());
auth.authenticationProvider(daoAuth);
}

感谢您的帮助。

最佳答案

在您的 WebSecurityConfiguration 中,authenticationManagerBean() 应该返回您自己的 AuthenticationManager bean 实例,而不是 super.authenticationManager()?

关于java - SpringSecurity BasicAuthenticationFilter 与自定义 AuthenticationManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53561807/

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