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

JWT令牌验证失败:添加[Authorize]后Postman提示无效令牌求助

解决JWT令牌生成正常但[Authorize]验证失败的问题

以下是针对该问题的排查和解决步骤:

1. 核对令牌生成与验证的核心参数一致性

你的认证配置中开启了Issuer、Audience、签名密钥的强验证,必须确保令牌生成时的参数和验证配置完全匹配:

  • 生成令牌时的Issuer必须和TokenValidationParameters里的ValidIssuer完全一致(包括大小写、域名/端口、拼写)
  • 生成令牌时的Audience必须和ValidAudience完全一致
  • 签名密钥(SymmetricSecurityKey的key参数)必须和生成令牌时使用的密钥完全相同,且编码方式一致(比如都是Encoding.UTF8.GetBytes(密钥字符串))

参数不匹配时,即使令牌格式正确,也会被判定为无效。

2. 确认令牌的传递方式正确

  • Postman Authorization选项卡:选择Bearer Token类型,直接粘贴生成的令牌字符串(不要带Bearer 前缀)
  • Headers传递:添加名为Authorization的请求头,值为Bearer 你的令牌内容(注意Bearer和令牌之间有一个空格)

两种方式二选一即可,不要同时使用避免冲突。

3. 验证令牌本身的有效性

用JWT解析工具(本地离线工具即可)解析你生成的令牌,检查以下字段:

  • iss:是否和配置中的ValidIssuer一致
  • aud:是否和配置中的ValidAudience一致
  • exp:过期时间是否在当前时间之后(避免令牌已过期)
  • nbf:生效时间是否在当前时间之前(避免令牌还未生效)

4. 查看详细日志定位具体错误

在appsettings.json中添加JWT认证的调试日志配置:

{
  "Logging": {
    "LogLevel": {
      "Microsoft.AspNetCore.Authentication.JwtBearer": "Debug"
    }
  }
}

重新运行程序后,查看控制台输出的日志,JWT Bearer中间件会详细输出验证失败的原因(比如签名不匹配、Issuer错误、令牌过期等),这是最快定位问题的方式。

5. 确认中间件顺序和配置完整性

你的代码中已经正确设置了中间件顺序:

app.UseHttpsRedirection();
app.UseAuthentication(); // 必须在UseAuthorization之前
app.UseAuthorization();

app.MapControllers();

这个顺序是正确的,但要确保没有其他自定义中间件拦截了认证流程。

如果系统中存在多个认证方案,可以尝试在[Authorize]特性中明确指定Scheme:

[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]

6. 检查令牌生成代码的正确性

如果以上步骤都没问题,可能是令牌生成代码存在问题,以下是标准的JWT生成示例,你可以对比自己的代码:

var tokenHandler = new JwtSecurityTokenHandler();
var key = Encoding.UTF8.GetBytes(jwtSettings["Secret"]); // 与验证时的key保持一致
var tokenDescriptor = new SecurityTokenDescriptor
{
    Issuer = jwtSettings["Issuer"],
    Audience = jwtSettings["Audience"],
    Expires = DateTime.UtcNow.AddHours(1), // 设置合理的过期时间
    SigningCredentials = new SigningCredentials(
        new SymmetricSecurityKey(key), 
        SecurityAlgorithms.HmacSha256Signature // 签名算法要与验证配置匹配
    )
};
var token = tokenHandler.CreateToken(tokenDescriptor);
var tokenString = tokenHandler.WriteToken(token);

内容的提问来源于stack exchange,提问作者Suleyman T.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 09:47:19