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

ABP 6.0分层架构K8s部署中OpenIddict重定向URI配置问题

问题解决配置指南

1. AuthServer 项目 appsettings.json 配置

1.1 客户端 RedirectUri 配置

找到 IdentityServer:Clients 下的 AppName_Web 节点,将外部地址的 redirect_uri 添加到 RedirectUris 和 PostLogoutRedirectUris 列表:

"IdentityServer": {
  "Clients": {
    "AppName_Web": {
      "ClientId": "AppName_Web",
      "ClientSecret": "your-client-secret",
      "RedirectUris": [
        "https://webpage_url/signin-oidc",
        "http://webpage_internal_url/signin-oidc" // 可选:集群内Web服务的内部地址
      ],
      "PostLogoutRedirectUris": [
        "https://webpage_url/signout-callback-oidc",
        "http://webpage_internal_url/signout-callback-oidc" // 可选:集群内Web服务的内部地址
      ]
    }
  }
}

1.2 AuthServer 内外地址配置

在 AppSettings 节点配置集群内内部地址,同时在 IdentityServer 节点配置外部访问的公共 origin:

"AppSettings": {
  "SelfUrl": "http://authserver-svc:44300" // K8s集群内AuthServer服务的内部地址(服务名+端口)
},
"IdentityServer": {
  "PublicOrigin": "https://auth_external_url" // 互联网可访问的AuthServer外部地址
}

2. .Web 项目 appsettings.json 配置

2.1 OpenIdConnect 客户端配置

指向 AuthServer 的外部地址,同时配置自身的外部 redirect_uri:

"AuthServer": {
  "Authority": "https://auth_external_url", // AuthServer的外部互联网地址
  "ClientId": "AppName_Web",
  "ClientSecret": "your-client-secret",
  "RedirectUri": "https://webpage_url/signin-oidc",
  "PostLogoutRedirectUri": "https://webpage_url/signout-callback-oidc"
},
"RemoteServices": {
  "Default": {
    "BaseUrl": "http://httpapi-host-svc:44301" // K8s集群内HttpApi.Host服务的内部地址
  }
}

3. .HttpApi.Host 项目 appsettings.json 配置

使用 AuthServer 的集群内内部地址进行通信,避免跨集群流量:

"AuthServer": {
  "Authority": "http://authserver-svc:44300" // AuthServer的集群内内部地址
},
"AppSettings": {
  "SelfUrl": "http://httpapi-host-svc:44301" // 自身集群内服务地址
}

4. .DbMigrator 项目 appsettings.json 配置

DbMigrator 负责初始化 IdentityServer 客户端数据,必须包含正确的 redirect_uri,否则数据库中客户端配置会缺失:

"IdentityServer": {
  "Clients": {
    "AppName_Web": {
      "RedirectUris": [
        "https://webpage_url/signin-oidc",
        "http://webpage_internal_url/signin-oidc"
      ],
      "PostLogoutRedirectUris": [
        "https://webpage_url/signout-callback-oidc",
        "http://webpage_internal_url/signout-callback-oidc"
      ]
    }
  }
}

执行 DbMigrator 后,数据库中 IdentityServerClients 表的 RedirectUris 字段会包含上述地址,确保 AuthServer 验证时能识别。

关键说明:K8s 内外地址配置位置

  • AuthServer 内部地址:配置在 AuthServer、HttpApi.Host、DbMigrator 的 AuthServer:Authority(或 AppSettings:SelfUrl),值为 K8s Service 地址(如 http://authserver-svc:44300),用于集群内服务间通信。
  • AuthServer 外部地址:配置在 AuthServer 的 IdentityServer:PublicOrigin 和 .Web 项目的 AuthServer:Authority,值为 Ingress 暴露的互联网地址(如 https://auth_external_url),用于外部客户端(Web)访问授权。
  • Web 项目外部地址:必须添加到 AuthServer 和 DbMigrator 的客户端 RedirectUris 列表中,确保 AuthServer 认可该跳转地址。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 20:01:06