I have a REST-only micro service built on Spring-Boot version 1.5.4.RELEASE with spring-boot-starter-security. The service has no web pages, just JSON in and out. The username and password are configured in the application.properties file. With credit to http://ryanjbaxter.com/2015/01/06/securing-rest-apis-with-spring-boot/ the following configuration causes the server to implement basic HTTP authentication quite nicely, it accepts the credentials and rejects unauthorized requests:
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable().authorizeRequests() //
.anyRequest().authenticated().and().httpBasic();
}
}
My question is that I'd like to exclude one little ole path, one tiny endpoint, from basic HTTP authentication. From frantic googling and SO copy-pasting I revised the above to have this:
http.csrf().disable().authorizeRequests() //
.antMatchers("/healthcheck").permitAll()
.anyRequest().authenticated().and().httpBasic();
This compiles and runs without warning, but that path is not opened for unauthenticated access. I still must supply credentials to check the service health.
Do I have to match paths one by one? My little healthcheck endpoint is at the base of the context path, as are a whole bunch of others - adding paths one-by-one would be a hassle.
The relevant part of my application.properties file is:
security.user.name = web-user
security.user.password = web-pass
management.security.roles=SUPERUSER
Maybe I need to fiddle roles somehow?
Please help, thanks in advance.
Update 1:
Path information - I'd like this path (and many more at root) to be guarded:
localhost:8081/abcd/user
And I'd like ONLY this one path to be open, no auth required:
localhost:8081/abcd/healthcheck
Update 2: Looks like I largely duplicated this 3-year-old question, but no answer was accepted there for my issue: