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

.NET JWT开启ValidateIssuer和ValidateAudience后授权失败问题求助

问题根因

你开启ValidateIssuer、ValidateAudience校验后,JWT中间件会强制校验请求携带的Token中iss(签发人)、aud(受众)两个声明与服务端配置的合法值是否匹配。但你当前的Token生成逻辑中,构造SecurityTokenDescriptor时未指定Issuer和Audience属性,生成的Token本身不携带这两个声明,自然无法通过校验,最终返回401未授权。

修复步骤
  1. 新增JWT配置项
    在你的应用配置文件(如appsettings.json)中新增签发人和受众的配置,示例如下:
{
  "TokenKey": "你原有配置的加密密钥",
  "Jwt:Issuer": "https://localhost:5001", // 替换为你实际的服务端地址
  "Jwt:Audience": "HeroMainApiClient" // 替换为你实际的业务客户端标识
}
  1. 修改Token生成逻辑
    更新TokenService代码,生成Token时携带签发人和受众声明:
    首先修改TokenService的构造函数,保存配置实例:
private readonly SymmetricSecurityKey _key;
private readonly UserManager<AppUser> _userManager;
private readonly IConfiguration _config; // 新增配置字段

public TokenService(IConfiguration config, UserManager<AppUser> userManager)
{
    _config = config; // 保存配置实例
    _userManager = userManager;
    _key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(config["TokenKey"]));
}

之后在CreateToken方法的SecurityTokenDescriptor中新增Issuer、Audience赋值:

var tokenDescriptor = new SecurityTokenDescriptor
{
    Subject = new ClaimsIdentity(claims),
    Expires = DateTime.Now.AddDays(7),
    SigningCredentials = creds,
    // 新增以下两行
    Issuer = _config["Jwt:Issuer"],
    Audience = _config["Jwt:Audience"]
};
  1. 完善JWT校验配置
    在注入JWT认证服务的代码中,补充合法的签发人、受众配置:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options =>
    {
        options.TokenValidationParameters = new TokenValidationParameters
        {
            ValidateIssuerSigningKey = true,
            IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(config["TokenKey"])),
            ValidateIssuer = true,
            ValidIssuer = config["Jwt:Issuer"], // 新增合法签发人配置
            ValidateAudience = true,
            ValidAudience = config["Jwt:Audience"], // 新增合法受众配置
        };
    });
注意事项

修复完成后需要重新登录获取新生成的Token,此前生成的老Token由于缺失iss、aud字段,调用接口依然会返回401。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:45:03