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

Spring Boot JWT认证Postman测试遇401 Unauthorized错误求助

解决JWT签名不匹配导致的401 Unauthorized问题

1. 先修正Postman的重复请求头设置

你同时在Auth选项卡(Bearer Token)和Headers选项卡添加了Authorization字段,这会让请求头里出现两个Authorization值,服务器解析时直接混乱,触发签名验证失败。只保留其中一种方式,优先用Auth选项卡的Bearer Token,Postman会自动生成标准的Bearer <token>格式请求头。

2. 核心排查:JWT密钥一致性

日志里的invalid JWT signature100%是因为生成令牌的密钥和验证令牌的密钥不一致,针对你用的bezkoder项目:

  • 打开application.properties/application.yml,找到jwt.secret配置项,确认密钥内容
  • 检查JwtUtils类的getJwtSecret()方法,确保它正确读取了配置文件的jwt.secret,没有硬编码的密钥覆盖配置值
  • 注意密钥不能有空格、特殊字符转义错误,比如配置文件里的引号是否正确闭合

3. 验证令牌本身的合法性

把拿到的accessToken复制到本地JWT解析工具(比如用jjwt库的命令行工具):

  • 检查Payload里的sub(用户名)、roles是否和登录响应一致
  • 确认Signature算法是HS512(bezkoder项目默认)
  • 检查令牌有没有被篡改,比如复制时多了空格、换行符,或者Postman自动加了多余字符

4. 检查AuthTokenFilter的解析逻辑

确认AuthTokenFilter里的令牌提取和验证流程:

  • 有没有正确去掉Bearer 前缀再执行验证
  • 验证时是否调用了JwtUtils的标准验证方法,有没有自己重新实现验证逻辑导致密钥不匹配

5. 兜底排查:用户信息加载异常

如果以上都没问题,检查登录时生成JWT的Claims是否正确:

  • 登录接口生成JWT时,是否正确获取了用户的id、username、roles等信息
  • 数据库里的用户角色是否和响应里的一致,有没有角色名称格式错误(比如少了ROLE_前缀)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:25:23