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

Docker Compose运行OpenIddict示例调用私有API报IDX20803错误如何解决?

故障原因

故障的核心是容器网络的寻址逻辑问题:

  • 你当前API服务的OpenIddict/JWT验证配置中,OIDC元数据拉取地址填写的是localhost:5000
  • 当API运行在Docker容器内时,容器内的localhost指向的是API容器本身,而非宿主机或其他服务容器,自然无法访问到OpenIddict授权服务,所以抛出Socket错误码99的地址无法分配异常
  • 你把API放在宿主机运行时正常,是因为宿主机的localhost可以直接访问到OpenIddict服务映射到宿主机的5000端口
  • 公共接口正常是因为不需要走JWT校验逻辑,无需拉取OIDC配置,所以不受影响
解决方案

  1. 确认Docker Compose服务命名
    首先确保你的docker-compose.yml中,OpenIddict授权服务有固定的服务名,同Docker Compose网桥下的所有容器,可直接通过服务名完成DNS解析互访,示例配置参考:
services:
  # 授权服务,服务名固定为auth-service
  auth-service:
    build: ./AuthServer
    ports:
      - "5000:5000"
    networks:
      - your-bridge-network
  # API服务
  api:
    build: ./Api
    ports:
      - "5001:5001"
    networks:
      - your-bridge-network
networks:
  your-bridge-network:
    driver: bridge
  1. 修改API的JWT/OpenIddict验证配置
    需要配置两个参数兼容前后端不同的调用场景:
  • MetadataAddress:设置为容器内部访问授权服务的地址,格式为http://<授权服务名>:<容器内部端口>/.well-known/openid-configuration,比如http://auth-service:5000/.well-known/openid-configuration,用于API容器内部拉取OIDC配置
  • ValidIssuer:设置为前端用户实际访问授权服务的地址,比如http://localhost:5000,和授权服务颁发Token时的issuer保持一致,用于验证Token合法性

ASP.NET Core示例配置:

builder.Services.AddAuthentication(options =>
{
    options.DefaultScheme = OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme;
})
.AddOpenIddictValidation(options =>
{
    options.MetadataAddress = "http://auth-service:5000/.well-known/openid-configuration";
    options.ValidIssuer = "http://localhost:5000";
    // 开发环境可禁用HTTPS校验,生产环境移除
    options.DisableHttpsRequirement();
});
  1. 验证网络连通性
    部署后可以进入API容器内部,执行命令验证授权服务是否可访问:
    curl http://auth-service:5000/.well-known/openid-configuration
    如果能正常返回JSON格式的OIDC配置,说明网络配置已生效。

  2. 额外检查项
    确保授权服务的监听地址是0.0.0.0而非127.0.0.1,ASP.NET Core默认会监听0.0.0.0,如果手动修改了appsettings.json的Urls配置或Program.cs的监听逻辑,需要修正为监听所有网卡地址。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:45:07