Я пытаюсь реализовать 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?
Заранее спасибо, Китти