аутентификация через ldap, авторизация в своей СУБД
аутентификация в spring-securit через ldap работает, но вот в приложении, разделение полномочий выполняется на основе ролей пользователей, ролей в ldap нет. В качестве ldap будет использоваться AD MS, так что и корячить туда роли смысла не вижу. Пытаюсь сделать что бы пользователь аутентифицировался через ldap и потом из БД приложения получал роли - но не могу понять как это сделать. Точнее вариант я вижу - это написание своего AuthenticationProvider который будет использовать UserService, и после успешной аутентификации обращаться к базе и получать оттуда роли. Но, уверен, что в Springe есть возможность, пройдя аутентификацию, каким то образом получить роли из базы, но не понимаю как.
В классе
class WebSecurityConfig extends WebSecurityConfigurerAdapter
могу сконфигурировать аутентификатор
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.ldapAuthentication()
.userDnPatterns("uid={0},ou=people")
.groupSearchBase("ou=groups")
.contextSource()
.url("ldap://localhost:8389/dc=springframework,dc=org")
.and()
.passwordCompare()
//.passwordEncoder(new BCryptPasswordEncoder())
.passwordAttribute("userPassword");
}
но тогда не понимаю как добавить сюда роли
Или могу добавить свой аутентификатор
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(authProvider);
}
но как в свой аутентификатор обернуть существующий аутентификатор спринга (стыдно писать полностью свой) - не понимаю.
Коллеги прошу подсказать куда копать. Заранее спасибо.