AuthenticationManagerBuilder
имеет метод jdbcAuthentication()
, который является целью при аутентификации JDBC.Как пример его использования
@Autowired
public void configAuthentication(AuthenticationManagerBuilder auth) throws Exception {
auth.jdbcAuthentication()
.dataSource(dataSource)
.usersByUsernameQuery(
"select username,password, enabled from users where
username=?"
)
.authoritiesByUsernameQuery(
"select username, role from user_roles where username=?");
}
Вопрос: пароль пользователя сохраняется в базе данных в зашифрованном виде.Есть ли способ, в конфигурации выше (используя AuthenticationManagerBuilder
), установить, какой кодировщик применять для необработанного пароля
Примечание: я уже решил проблему сопоставления необработанного пароля из пользовательского интерфейса с закодированнымпароль хранится в базе данных, используя
@Autowired
public void init(AuthenticationManagerBuilder auth, DaoAuthenticationProvider provider) throws Exception {
auth.authenticationProvider(provider);
}
@Bean
public DaoAuthenticationProvider authProvider(CustomUserDetailsService userDetailsService, CustomEncoder customEncoder) {
DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider();
authProvider.setUserDetailsService(userDetailsService);
authProvider.setPasswordEncoder(customEncoder);
return authProvider;
}
и определяя CustomUserDetailsService userDetailsService, CustomEncoder customEncoder, но мне интересно знать, возможно ли повторно использовать всю функциональность AuthenticationManagerBuilder без этих пользовательских реализаций