Как настроить UserDetailsChecker для preAuthenticationChecks и postAuthenticationChecks в Spring Boot - PullRequest
0 голосов
/ 23 мая 2018

Я ищу «оптимальное» решение для настройки UserDetailsChecker для preAuthenticationChecks и / или postAuthenticationChecks в Spring Boot (см. AbstractUserDetailsAuthenticationProvider и DaoAuthenticationProvider).

Это абсолютно необходимосоздать пользовательский DaoAuthenticationProvider?

Нет способа настроить его с помощью WebSecurityConfigurerAdapter или AuthenticationManagerBuilder?

1 Ответ

0 голосов
/ 24 мая 2018

Отвечая на мой собственный вопрос: я искал источники весенней загрузки (v1.5.13.RELEASE и v2.0.2.RELEASE) с grep - без результатов.

По крайней мере, в этих версиях у вас естьсоздать пользовательский DaoAuthenticationProvider, если вы хотите использовать дополнительные проверки до или после проверки подлинности.

Редактировать: Фраза "вам нужно создать пользовательский DaoAuthenticationProvider" немного вводит в заблуждение.В недавнем проекте я сделал это следующим образом:

@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurityConfig {

    @Autowired
    public void configureGlobal(
            AuthenticationManagerBuilder auth,
            MyUserAccountService myUserAccountService,
            PasswordEncoder passwordEncoder,
            MessageSourceAccessor messageSourceAccessor
    ) throws Exception {
        DaoAuthenticationProvider daoAuthenticationProvider = new DaoAuthenticationProvider();
        daoAuthenticationProvider.setPasswordEncoder(passwordEncoder);
        daoAuthenticationProvider.setUserDetailsService(myUserAccountService);
        daoAuthenticationProvider.setPostAuthenticationChecks(new UserAccountChecker(messageSourceAccessor));
        auth.authenticationProvider(daoAuthenticationProvider);
        auth.userDetailsService(myUserAccountService).passwordEncoder(passwordEncoder);
    }

[...]

}

Здесь UserAccountChecker implements UserDetailsChecker - это класс, в котором (после) проверки подлинности проходят (также см. Класс DefaultPostAuthenticationChecks в * 1013).*).

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