Как запустить какой-либо сервис перед filterchain? - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть два поставщика аутентификации

auth.authenticationProvider(adAuthProvider());
auth.authenticationProvider(jdbcAuthProvider());

Сначала пользователь пытается войти через LDAP, и, если он не находится в Active Directory (внешнее пользователь, не являющийся пользователем LDAP), приложение пытается аутентифицировать его через базу данных.

Если пользователь впервые входит в систему через LDAP, мне нужно проверить базу данных на то же имя пользователя (некоторые пользователи, не являющиеся пользователями LDAP, могли ранее зарегистрироваться в базе данных), а если его имя отсутствует в базе данных, мне нужно вставить его логин в базу данных. После этого пользователь LDAP существует в базе данных (мне нужно это, чтобы предоставить ему некоторые полномочия из базы данных).

В моем приложении у меня также есть фильтры

@Bean
public FilterRegistrationBean<LDAPUserExistsInDatabaseFilter> ldapUserExistsInDatabaseFilterRegistrationBean() {
    FilterRegistrationBean<LDAPUserExistsInDatabaseFilter> ldapUserExistsInDatabaseFilterRegistrationBean = new FilterRegistrationBean<>();
    LDAPUserExistsInDatabaseFilter filter = new LDAPUserExistsInDatabaseFilter();

    ldapUserExistsInDatabaseFilterRegistrationBean.setFilter(filter);
    return ldapUserExistsInDatabaseFilterRegistrationBean;      
}

@Bean
public FilterRegistrationBean<MethodPathRequestFilter> methodPathRequestFilterRegistrationBean() {
    FilterRegistrationBean<MethodPathRequestFilter> methodPathRequestFilterRegistrationBean = new FilterRegistrationBean<>();
    MethodPathRequestFilter methodPathRequestFilter = new MethodPathRequestFilter();
    methodPathRequestFilterRegistrationBean.setFilter(methodPathRequestFilter);
    return methodPathRequestFilterRegistrationBean;     
}

Этот фильтр берет некоторую информацию из базы данных.

Вопрос в том, как я могу проверить пользователя LDAP authenticatad в базе данных перед запуском цепочки фильтров (для фильтров нужны полномочия из базы данных)? И как я могу вставить его учетные данные в базу данных сразу после аутентификации? Подходит ли для этого фильтр с наивысшим порядком?

Короче говоря - я хотел бы иметь следующий процесс - АУТЕНТИФИКАЦИЯ - ПРОВЕРЬТЕ ПОЛЬЗОВАТЕЛЯ В БАЗЕ ДАННЫХ (вставьте, если нет) - ЦЕПЬ ФИЛЬТРА

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...