I am trying to secure a web application using Spring Security java configuration.
This is how the configuration looks:-
@Configuration
@EnableWebMvcSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
private String googleClientSecret;
@Autowired
private CustomUserService customUserService;
/*
* (non-Javadoc)
*
* @see org.springframework.security.config.annotation.web.configuration.
* WebSecurityConfigurerAdapter
* #configure(org.springframework.security.config
* .annotation.web.builders.HttpSecurity)
*/
@Override
protected void configure(HttpSecurity http) throws Exception {
// @formatter:off
http
.authorizeRequests()
.antMatchers(HttpMethod.GET, "/","/static/**", "/resources/**","/resources/public/**").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.and()
.httpBasic().disable()
.requiresChannel().anyRequest().requiresSecure();
// @formatter:on
super.configure(http);
}
@Override
protected void configure(AuthenticationManagerBuilder auth)
throws Exception {
// @formatter:off
auth
.eraseCredentials(true)
.userDetailsService(customUserService);
// @formatter:on
super.configure(auth);
}
}
Notice that I have explicitly disabled HTTP Basic authentication using:-
.httpBasic().disable()
I am still getting HTTP Authenticaton prompt box while accessing a secured url. Why?
Please help me fix this. I just want to render the default login form that comes bundled.
Spring Boot Starter Version : 1.1.5 Spring Security Version : 3.2.5
Thanks
The following worked for me:
First of all, calling
super.configure(http);
will override whole your configuration you have before that.Try this instead:
You can disable the formLogin through the HttpSecurity instance as follow:
This will lead receiving 403 Http error when trying to access any secured resource
Anonymous option worked for me. My code like
In case you use Spring Boot, the documentation states:
So if you want to fully customize itself that might be an option.
Just to make it clear... You just need to put @EnableWebSecurity annotation on your main application class or application configuration class.