Spring 安全性忽略了我的 authenticationEntryPoint
Spring security ignoring my authenticationEntryPoint
我最近升级到 Spring Boot 2.1.7 和 Spring security 5.1.6,出于某种原因 Spring Security 忽略了我为处理 HTTP 403 响应配置的异常处理。它不断重定向到 /error 导致 HTTP 404 错误,因为此页面不存在。我的 Spring 安全配置如下所示:
http.exceptionHandling()
.authenticationEntryPoint(new Http403ForbiddenEntryPoint())
.and()
.addFilter(headerAuthenticationFilter)
.httpBasic().disable()
.csrf().disable()
.authenticationProvider(preAuthenticatedAuthenticationProvider)
.authorizeRequests()
.antMatchers("/api/**")
.hasAnyRole("ROLE1", "ROLE2")
.and()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
有人知道我做错了什么吗?
问题似乎是使用较新的 Spring 引导版本需要添加额外的排除项。这是配置的片段:
@Configuration
@EnableWebSecurity(debug = true)
@EnableAutoConfiguration(exclude = { WebMvcAutoConfiguration.class, ErrorMvcAutoConfiguration.class })
@EnableGlobalMethodSecurity(securedEnabled = true)
@PropertySource("classpath:application.properties")
public class ApiSecurityConfiguration extends WebSecurityConfigurerAdapter {
我必须添加的部分是 ErrorMvcAutoConfiguration.class。在此之前没有必要。
我最近升级到 Spring Boot 2.1.7 和 Spring security 5.1.6,出于某种原因 Spring Security 忽略了我为处理 HTTP 403 响应配置的异常处理。它不断重定向到 /error 导致 HTTP 404 错误,因为此页面不存在。我的 Spring 安全配置如下所示:
http.exceptionHandling()
.authenticationEntryPoint(new Http403ForbiddenEntryPoint())
.and()
.addFilter(headerAuthenticationFilter)
.httpBasic().disable()
.csrf().disable()
.authenticationProvider(preAuthenticatedAuthenticationProvider)
.authorizeRequests()
.antMatchers("/api/**")
.hasAnyRole("ROLE1", "ROLE2")
.and()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
有人知道我做错了什么吗?
问题似乎是使用较新的 Spring 引导版本需要添加额外的排除项。这是配置的片段:
@Configuration
@EnableWebSecurity(debug = true)
@EnableAutoConfiguration(exclude = { WebMvcAutoConfiguration.class, ErrorMvcAutoConfiguration.class })
@EnableGlobalMethodSecurity(securedEnabled = true)
@PropertySource("classpath:application.properties")
public class ApiSecurityConfiguration extends WebSecurityConfigurerAdapter {
我必须添加的部分是 ErrorMvcAutoConfiguration.class。在此之前没有必要。