ASP.NET JWT身份验证出现IDX10211:发行者验证失败问题
ASP.NET JWT验证报错IDX10211的解决办法
1. 核对Program.cs中的JWT验证配置
确保AddJwtBearer配置里的ValidIssuer和ValidAudience正确读取自appsettings.json,且未被设为空值。示例代码:
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidIssuer = builder.Configuration["Jwt:Issuer"], ValidateAudience = true, ValidAudience = builder.Configuration["Jwt:Audience"], ValidateIssuerSigningKey = true, IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"])) }; });
重点检查配置键名是否和appsettings.json中的节点完全匹配,避免因键名拼写错误导致读取到空值。
2. 确保token生成逻辑与验证端一致
生成token时必须使用和验证端完全相同的Issuer、Audience值,直接读取配置文件而非硬编码,示例:
var tokenHandler = new JwtSecurityTokenHandler(); var key = Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"]); var tokenDescriptor = new SecurityTokenDescriptor { Issuer = builder.Configuration["Jwt:Issuer"], Audience = builder.Configuration["Jwt:Audience"], Expires = DateTime.UtcNow.AddHours(1), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) }; var token = tokenHandler.CreateToken(tokenDescriptor);
即使jwt.io显示token正常,也要确认生成时的Issuer值和验证配置的完全一致。
3. 检查请求头的token传递格式
调用接口时,Authorization请求头必须严格遵循Bearer {token}格式,不能遗漏Bearer前缀,也不能有多余空格。可以通过调试工具(如浏览器开发者工具)确认请求头的正确性。
4. 排查配置文件读取问题
确认appsettings.json中的JWT配置节点有效,示例:
"Jwt": { "Issuer": "YourIssuerName", "Audience": "YourAudienceName", "Key": "YourSecretKeyWithAtLeast16Characters" }
如果使用多环境配置,要确保当前运行环境加载的配置文件(如appsettings.Development.json)中Issuer值不为空。
内容的提问来源于stack exchange,提问作者Bart Friederichs
相关产品推荐
相关产品推荐

