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

Spring Boot Security:JWT认证后接口均返回403错误求助

Spring Boot JWT认证后/server/list接口403 Forbidden排查方案
  • 检查Spring Security权限配置
    确认/server/list接口是否被正确配置为需要认证:

    • 检查配置类中是否存在antMatchers("/server/list").authenticated()(或基于lambda的authorizeHttpRequests().requestMatchers("/server/list").authenticated())的规则,避免误设为denyAll()或错误的角色限制(比如hasRole("ADMIN")但注册用户未分配该角色)。
    • 若存在多套HttpSecurity配置,确保JWT相关配置的优先级更高(可通过@Order注解调整顺序)。
  • 验证JWT Token的生成与解析逻辑

    • 确认/auth/register生成Token时,是否正确注入了用户的身份信息(如用户名)和必要权限,避免Token中无有效认证数据。
    • 检查JWT认证过滤器是否正确拦截请求:确保过滤器已被添加到Spring Security的过滤器链中,且能从Authorization头中正确提取Token并完成解析。
    • 验证解析后的Authentication对象是否被存入SecurityContextHolder——过滤器中需执行SecurityContextHolder.getContext().setAuthentication(auth),否则后续请求无法识别已认证用户。
  • 确认请求头格式正确性
    确保请求头严格遵循Authorization: Bearer <token>格式:

    • Bearer与Token之间必须有一个空格,Token不能包含额外空格、换行符或转义字符。
    • 可通过curl命令快速验证:
      curl -H "Authorization: Bearer your_generated_token" http://localhost:8080/server/list
      
  • 排查默认配置冲突

    • 检查是否引入了冲突的Spring Security依赖,或未排除默认的SecurityAutoConfiguration,导致默认的表单认证或HTTP Basic认证覆盖了自定义JWT配置。
    • 确认配置类上已添加@EnableWebSecurity注解,确保自定义配置生效。
  • 开启调试日志定位根因
    在配置文件中添加Spring Security的调试日志,获取请求拦截的完整流程:

    logging:
      level:
        org.springframework.security: DEBUG
    

    调试日志会输出每个过滤器的执行情况、认证失败的具体原因(如Token签名无效、过期、权限不足等),这是定位403错误最有效的方式。

若以上排查仍无法解决问题,建议补充以下核心代码片段:

  • Spring Security的完整配置类
  • /auth/register接口中生成JWT Token的代码
  • JWT认证过滤器的实现代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 07:06:10