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

.NET 6 CoreWebApi集成FusionAuth认证报IDX20803错误如何解决

问题原因

你使用的AddMicrosoftIdentityWebApi扩展方法是微软身份平台专属组件,默认读取的配置字段为Authority而非你配置的Instance,无法正确拼接FusionAuth的OIDC元数据地址,导致身份校验服务初始化失败,抛出IDX20803错误。

修复步骤

1. 替换认证服务注册代码

将原来的认证服务注册逻辑替换为标准JwtBearer配置,适配FusionAuth的结构:

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options =>
    {
        // 本地开发关闭HTTPS校验,生产环境请删除该行
        options.RequireHttpsMetadata = false;
        // 拼接FusionAuth的租户级签发地址
        options.Authority = $"{builder.Configuration["FusionAuth:Instance"]}/{builder.Configuration["FusionAuth:TenantId"]}";
        // 配置接收的受众为当前应用的ClientId
        options.Audience = builder.Configuration["FusionAuth:ClientId"];
        options.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
        {
            ValidateIssuer = true,
            ValidIssuer = $"{builder.Configuration["FusionAuth:Instance"]}/{builder.Configuration["FusionAuth:TenantId"]}",
            ValidateAudience = true,
            ValidAudience = builder.Configuration["FusionAuth:ClientId"],
            ValidateLifetime = true
        };
    });

2. 清理冗余配置

CallbackPath是给带前端登录的OIDC流程使用的,纯API接口项目不需要该配置,调整后配置如下即可:

"FusionAuth": {
  "Instance": "http://localhost:9011",
  "ClientId": "xx1",
  "ClientSecret": "xx2",
  "TenantId": "xx3"
},

3. 确认请求凭证类型

调用接口只能使用FusionAuth返回的access_token,refresh_token是用来刷新访问凭证的,本身不能作为接口访问的身份凭证。

4. 确认中间件注册顺序

认证、授权中间件的注册顺序不能出错,必须放在路由匹配之后、接口映射之前:

app.UseRouting();

app.UseAuthentication();
app.UseAuthorization();

app.MapControllers();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:36:02