I'm using Spring Security KeyCloak adapter
I've configured it successfully, so the behavior is like:
- (1) If I go to localhost:8080/xyz (my web server) -> redirect to http://auth-server/auth/realms/...
- (2) If I go to localhost:8080/ -> NOT redirect to http://auth-server/auth/realms/...
So, how can I achieve the (2) behavior?
This is the Spring Security configuration:
@Configuration
@EnableWebSecurity
@ComponentScan(basePackageClasses = KeycloakSecurityComponents.class)
public class SecurityConfig extends KeycloakWebSecurityConfigurerAdapter {
/**
* Registers the KeycloakAuthenticationProvider with the authentication manager.
*/
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(keycloakAuthenticationProvider());
}
@Override
protected SessionAuthenticationStrategy sessionAuthenticationStrategy() {
return new RegisterSessionAuthenticationStrategy(new SessionRegistryImpl());
}
@Bean
public FilterRegistrationBean keycloakAuthenticationProcessingFilterRegistrationBean(
KeycloakAuthenticationProcessingFilter filter) {
FilterRegistrationBean registrationBean = new FilterRegistrationBean(filter);
registrationBean.setEnabled(false);
return registrationBean;
}
@Bean
public FilterRegistrationBean keycloakPreAuthActionsFilterRegistrationBean(
KeycloakPreAuthActionsFilter filter) {
FilterRegistrationBean registrationBean = new FilterRegistrationBean(filter);
registrationBean.setEnabled(false);
return registrationBean;
}
@Override
protected KeycloakLogoutHandler keycloakLogoutHandler() throws Exception {
return super.keycloakLogoutHandler();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
super.configure(http);
http
.logout().logoutUrl("/logout").addLogoutHandler(keycloakLogoutHandler())
.and()
.authorizeRequests()
.anyRequest().authenticated();
}
}