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
相关产品推荐
相关产品推荐

