【发布时间】:2019-05-02 20:40:24
【问题描述】:
对于 BasicAuthenticationFilter,我正在尝试注入我自己的 AuthenticationManager。 但是当我调试 Startup 时,我总是发现 Class 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);
}
感谢您的帮助。
【问题讨论】:
标签: java spring spring-security oauth spring-security-oauth2