Description
As asked on gitter I found an issue after upgrading to Spring Boot 2.6.0: running a @SpringBootTest
with @AutoConfigureMockMvc
a login page (not limited to) is no longer accessible after the upgrade. The same configuration that worked on Spring Boot 2.5.7 now triggers a 401. Tracing this lead me to the ErrorPageSecurityFilter
.
Since 2.6.0 the initial request gets granted, but the (mock) filter chain goes through the ErrorPageSecurityFilter
and denies in later.
I made a small example project to reproduce the issue: https://github.com/martinvisser/error-page-security-filter-issue.
For reasons I can't exactly remember I had multiple configuration extending from WebSecurityConfigurerAdapter
which worked in Spring Boot 2.5.7. Merging the two configurations into one fixed the issue for me, but it does still sound like unforeseen and unwanted behavior.
This worked in 2.5.7, but fails in 2.6.0:
@Configuration(proxyBeanMethods = false)
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
internal class WebSecurityConfig : WebSecurityConfigurerAdapter() {
@Configuration(proxyBeanMethods = false)
@Order(1)
internal class FormWebSecurityConfigurerAdapter : WebSecurityConfigurerAdapter() {
override fun configure(http: HttpSecurity) {
http.authorizeRequests {
it.anyRequest().permitAll()
}
}
}
}
This works in both though:
@Configuration(proxyBeanMethods = false)
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
internal class WebSecurityConfig : WebSecurityConfigurerAdapter() {
override fun configure(http: HttpSecurity) {
http.authorizeRequests {
it.anyRequest().permitAll()
}
}
}