首页 > 解决方案 > Spring security 忽略了我的 authenticationEntryPoint

问题描述

我最近升级到 Spring Boot 2.1.7 和 Spring security 5.1.6,出于某种原因,Spring Security 忽略了我为处理 HTTP 403 响应而配置的异常处理。由于此页面不存在,它不断重定向到 /error 导致 HTTP 404 错误。我的 Spring Security 配置如下所示:

    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-bootspring-securityjersey-2.0

解决方案


问题似乎是使用较新的 Spring Boot 版本需要添加额外的排除项。这是配置的片段:

@Configuration
@EnableWebSecurity(debug = true)
@EnableAutoConfiguration(exclude = { WebMvcAutoConfiguration.class, ErrorMvcAutoConfiguration.class })
@EnableGlobalMethodSecurity(securedEnabled = true)
@PropertySource("classpath:application.properties")
public class ApiSecurityConfiguration extends WebSecurityConfigurerAdapter {

我必须添加的部分是 ErrorMvcAutoConfiguration.class。在此之前没有必要。


推荐阅读