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

Моя текущая реализация безопасности Spring основана на использовании клиентских сертификатов x509.Клиент присоединяет сертификат клиента к своему запросу и мой текущий весенний конфигурационный файл безопасности, который обрабатывает его, находится в WebSecurityConfigurerAdapter:

@Override
protected void configure(HttpSecurity http) {
http.authorizeRequests().antMatchers("/protected/").authenticated()
 .anyRequest().permitAll()
 .and()
 .x509()
 .userDetailsService(username -> { 
   if (username.equals("allowed-common-name")
      return new User(username, "", GrantedAuthorities..?);
   return null;

, и это прекрасно работает, когда я использую только сертификаты клиента.

Я пытаюсь интегрировать Keycloak в эту цепочку безопасности, чтобы при хорошем сертификате клиента запускался поток openid.

Я настроил Keycloak, настроил его, он прекрасно работает, когдаЯ настраиваю его самостоятельно (без вызова .x509()), зарегистрировав keycloakConfigResolver для загрузки свойств весенней загрузки из yaml и добавив KeycloakAuthenticationProvider в метод configure AuthenticationManagerBuilder.

Что я не могу заставить работатьэто следующий сценарий: убедитесь, что сертификат x509 действителен, ТО триггер потока аутентификации keycloakЯ пытался объединить менеджеры аутентификации (вызывая их один за другим), но я всегда проходил аутентификацию сразу после завершения проверки сертификата клиента.

...