аутентификация через 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);

}

но как в свой аутентификатор обернуть существующий аутентификатор спринга (стыдно писать полностью свой) - не понимаю.

Коллеги прошу подсказать куда копать. Заранее спасибо.


Ответы (0 шт):