You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot不使用已废弃WebSecurityConfigurerAdapter实现简易Basic认证时遭遇HTTP 403错误的问题排查

解决Spring Boot Basic认证的警告与403错误问题

我来帮你分析和解决这两个问题:

一、关于web.ignoring()的警告问题

Spring Security确实不推荐使用web.ignoring()来放行端点,因为这会让这些端点完全跳过整个安全过滤器链,可能缺失CSRF保护、会话管理等必要的安全机制。正确的做法是在authorizeHttpRequests中使用permitAll()来配置允许匿名访问的端点:

修改你的SecurityFilterChain配置,把原来webSecurityCustomizer里的路径移到这里:

@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
    http
        .authorizeHttpRequests((authz) -> authz
            // 允许这些路径匿名访问
            .antMatchers("/a", "/b", "/c", "/v3/api-docs/**", "/swagger-ui/**", "/swagger-ui.html").permitAll()
            // 其他所有请求需要认证
            .anyRequest().authenticated()
        )
        .httpBasic();
    return http.build();
}

之后你可以直接删除webSecurityCustomizer这个Bean,这样就不会再收到警告了。

二、其他端点返回403错误的问题

出现403(禁止访问)而非401(未授权),通常有两种常见原因:

1. CSRF保护拦截了请求

Spring Security默认启用CSRF保护,对于POST、PUT、DELETE、PATCH这类会修改资源的请求,要求携带CSRF Token才能通过验证。如果你的客户端(比如Postman、前端页面)没有传递CSRF Token,就会返回403。

解决方法分两种场景:

  • 纯API服务(无浏览器访问):直接关闭CSRF保护,在filterChain中添加csrf().disable():
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
            .csrf().disable() // 关闭CSRF保护
            .authorizeHttpRequests((authz) -> authz
                .antMatchers("/a", "/b", "/c", "/v3/api-docs/**", "/swagger-ui/**", "/swagger-ui.html").permitAll()
                .anyRequest().authenticated()
            )
            .httpBasic();
        return http.build();
    }
    
  • 有浏览器端访问:先从/csrf端点获取CSRF Token,然后在请求头中添加X-XSRF-TOKEN字段传递这个Token。

2. 认证头或密码配置问题(可能性较低)

从你的代码来看,用户角色和密码配置是正确的:密码前缀{bcrypt}会让Spring Security自动使用你配置的BCryptPasswordEncoder验证。你可以检查下请求是否正确携带了Authorization: Basic <base64编码的user:password>头,确保编码后的内容与你的用户名密码匹配(比如如果明文密码是password,对应的base64编码是dXNlcjpwYXNzd29yZA==)。

总结

先把web.ignoring()替换成permitAll()解决警告,再根据服务类型选择关闭CSRF或传递Token来解决403问题。

内容的提问来源于stack exchange,提问作者Samuel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 01:52:41