Spring saml config не работает после добавления аутентификации EntryPoint - PullRequest
0 голосов
/ 11 марта 2020

Я пытаюсь реализовать Spring Security с использованием протокола saml. Наше приложение не имеет состояния, поэтому с помощью saml я хотел бы аутентифицировать и вернуть токен вызывающей стороне. При последующих вызовах аутентификация происходит с токена.

Я использую следующий код для настройки запросов,

@Configuration
@Order(1)
public class SamlWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {


        http.csrf().disable().antMatcher("/saml/**")
        .authorizeRequests()
        .antMatchers("/saml/token/**").authenticated()
        .antMatchers("/saml*").permitAll().and()
        .apply(SAMLConfigurer.saml().userDetailsService(sAMLUserDetailsServiceImpl)).serviceProvider()
        .keyStore().storeFilePath(keyStoreFilePath).password(password).keyname(keyAlias)
        .keyPassword(password).and().protocol("https").hostname(String.format("%s:%s", "localhost" , port))
        .basePath(contextPath).and().identityProvider().metadataFilePath(metadataUrl);

        //http.addFilterBefore(authFilter, UsernamePasswordAuthenticationFilter.class);
        http.exceptionHandling().authenticationEntryPoint(authenticationEntryPointImpl);
        //@formatter:on
    }
}

@Configuration
public class DefaultWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {

        //@formatter:off

        //......configuration for stateless apis......

        //@formatter:on
    }
}

Когда приложение получает "/ saml / token", то после аутентификации saml токен будет отправлен обратно. В конфигурации я добавил следующую конфигурацию обработки исключений. http.exceptionHandling (). authenticationEntryPoint (authenticationEntryPointImpl);

Если я удаляю вышеуказанную строку, все работает нормально, как и ожидалось. Но если я добавлю точку входа для аутентификации исключений, то когда я вызываю «/ saml / token», то всегда вызов идет на authenticationEntryPointImpl вместо страницы перенаправления saml.

Я не могу понять, в чем причина за это поведение. Может кто-нибудь, пожалуйста, помогите мне, что происходит, когда я добавляю аутентификацию EntryPointImpl?

Заранее спасибо, Китти

...