ASP.NET Core Web API中JWT认证失效及IDX20803错误求助
解决JWT认证时IDX20803错误的方案
错误根源在于业务WebAPI的JWT认证配置逻辑错误:你设置了Authority属性,这会让JwtBearer中间件尝试从指定地址获取OpenID Connect(OIDC)元数据文档(比如.well-known/openid-configuration),但你的Auth.API只是简单生成JWT Token,并没有提供OIDC服务的元数据端点,因此导致配置获取失败。
修复步骤:
1. 修改业务WebAPI的认证配置
去掉Authority配置,改为直接指定JWT验证参数,和Auth.API保持一致:
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.RequireHttpsMetadata = false; // 生产环境请设为true options.SaveToken = true; options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuerSigningKey = true, // 必须和Auth.API中使用的密钥完全一致 IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(builder.Configuration["Jwt:Key"])), ValidateIssuer = false, ValidateAudience = false }; });
2. 确保密钥一致性
- 确认业务WebAPI的
appsettings.json中Jwt:Key的值和Auth.API的完全相同 - 注意编码方式:Auth.API生成Token用的是
Encoding.ASCII.GetBytes,业务API也要用相同编码,避免密钥不匹配导致验证失败
3. 可选:进阶的Authority模式(按需使用)
如果希望通过Authority统一管理配置,需要在Auth.API中搭建OIDC服务(比如用IdentityServer4或OpenIddict),提供元数据端点。但当前场景下,直接配置验证参数更简单高效。
额外注意事项
- 生产环境务必将
RequireHttpsMetadata设为true,防止Token被窃听篡改 - 若需要验证Issuer或Audience,需在Auth.API生成Token时指定对应字段,并在业务API的验证参数中开启对应验证项
内容的提问来源于stack exchange,提问作者Utpal Maity
相关产品推荐
相关产品推荐

