Механизмы множественной аутентификации Spring-security с одинаковыми учетными данными - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь использовать 2 механизма авторизации одновременно: LDAP и DAO. Они работают в порядке конфигурации. Это не подходит, если учетные данные пользователя совпадают в обоих механизмах. (Например, в LDAP есть пользователь m.smith с паролем qwerty , а в базе данных есть пользователь m.smith с паролем * QWERTY 1008 *) Можно ли как-то передать флаг, какой механизм использовать в текущий момент? Другой механизм в этом случае следует игнорировать.

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {


    auth
        .ldapAuthentication()
        .contextSource(contextSource)
        .userSearchFilter("(sAMAccountName={0})")
        .userDetailsContextMapper(userDetailsContextMapper);

    auth
        .userDetailsService(userDetailsService)
        .passwordEncoder(passwordEncoder());
}

1 Ответ

0 голосов
/ 21 января 2019

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

Я не знаю ни одного другого решения, которое могло бы делать то, что вы хотите во время выполнения.

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