AuthenticationManager вызывается в случае клиента на основе сертификата - PullRequest
0 голосов
/ 26 сентября 2018

Какой AuthenticationManager вызывается Spring при использовании аутентификации клиента на основе сертификатов?В настоящее время я использую PamAuthentication и мне нужно использовать аутентификацию на основе сертификатов.Я вижу, что org.springframework.security.core.userdetails.UserDetailsService больше не вызывается.Какая реализация вызывается в случае аутентификации на основе сертификатов?

1 Ответ

0 голосов
/ 28 сентября 2018

При использовании аутентификации на основе сертификатов AbstractPreAuthenticatedProcessingFilter будет отвечать за аутентификацию клиента.Во-первых, фильтр извлекает клиента через X509AuthenticationFilter.После этого создается токен аутентификации с использованием сертификата CN в качестве принципала и сертификата DN в качестве учетных данных.Реализация AuthenticationManager, которая будет выполнять аутентификацию этого токена, - PreAuthenticatedAuthenticationProvider, которая будет использовать вашу реализацию UserDetailsService для аутентификации клиента.

Вы можете включить аутентификацию сертификата, добавив его в HttpConfigurer,и настройте собственную реализацию UserDetailsService.

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests()
        .anyRequest()
        .authenticated()
        .and()
        .x509()
        .subjectPrincipalRegex("CN=(.*?)")
        .userDetailsService(userDetailsService());
}

@Bean
public UserDetailsService userDetailsService() {
    return new UserDetailsService() {
        @Override
        public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
            Optional<User> user = userRepository.findByUsername(username);
            if(user.isPresent()){
                return new User(username, userCredentials, new Role("ROLE_USER"));
            }
            throw new UsernameNotFoundException("User" + username + "does not exist");
        }
    };
}

Здесь у вас есть пример аутентификации сертификата x509.

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