У меня есть клиент, который определил использование предоставления пароля без секрета клиента, но когда я вызываю токен, он не работает, и я получаю предупреждение BCryptPasswordEncoder : Empty encoded password
. Spring Security позволяет использовать клиенты без секрета, в AuthorizationServerSecurityConfigurer
я полагаю, что PasswordEncoder
должно совпадать, если закодированный пароль пуст, но он никогда не достигнет этой точки, BasicAuthenticationFilter
, потому что останавливает его с другим кодировщиком пароля.
@Configuration
@EnableAuthorizationServer
public class AuthServerConfig extends AuthorizationServerConfigurerAdapter {
private final AuthenticationManager authenticationManager;
private final CustomerLoginService userDetailsService;
private final OAuthClientDetailsService oAuthClientDetailsService;
@Autowired
public AuthServerConfig(@Qualifier("authenticationManagerBean") AuthenticationManager authenticationManager,
CustomerLoginService userDetailsService,
OAuthClientDetailsService oAuthClientDetailsService) {
this.authenticationManager = authenticationManager;
this.userDetailsService = userDetailsService;
this.oAuthClientDetailsService = oAuthClientDetailsService;
}
@Override
public void configure(AuthorizationServerSecurityConfigurer oauthServer) {
oauthServer
.tokenKeyAccess("permitAll()")
.checkTokenAccess("isAuthenticated()");
}
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.withClientDetails(oAuthClientDetailsService);
}
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) {
endpoints
.tokenStore(new InMemoryTokenStore())
.authenticationManager(authenticationManager)
.userDetailsService(userDetailsService);
}
}