Spring Security表单登录与REST API Basic Auth共存遇403问题排查
问题排查与解决:Spring Security REST API Basic Auth 403 Forbidden
问题根源
从控制台日志可直接定位问题:
o.s.security.web.csrf.CsrfFilter : Invalid CSRF token found for http://localhost:8080/api/enhance-process
你的/api/**对应的SecurityFilterChain未禁用CSRF保护。Spring Security默认会对POST/PUT/DELETE等请求校验CSRF令牌,但REST API基于Basic Auth认证时不需要CSRF防护,因此POST请求被拦截返回403。
修复代码
修改@Order(1)的SecurityFilterChain配置,新增CSRF禁用逻辑:
@Order(1) @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http.antMatcher("/api/**") .csrf().disable() // 禁用API接口的CSRF保护 .authorizeRequests() .anyRequest() .hasAuthority("ADMIN") .and().httpBasic(); return http.build(); }
额外验证点
- 确认调用API时正确发送Basic Auth请求头,格式为
Authorization: Basic <base64编码的用户名:密码> - 检查用户是否确实拥有
ADMIN权限,排除权限不足导致的403
内容的提问来源于stack exchange,提问作者Shailesh Vikram Singh
相关产品推荐
相关产品推荐

