You need to enable JavaScript to run this app. ASP.NET Core IdentityServer4 HTTPS登录回调地址丢失主机名
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core IdentityServer4 HTTPS登录回调地址丢失主机名

故障场景与定位

部署环境

  • 技术栈:ASP.NET Core v3 Web应用 + IdentityServer4 + Angular 8前端
  • 部署方式:IdentityServer、业务应用MyApp分别部署在同一IIS实例的两个独立站点
    • IdentityServer站点绑定地址:192.168.100.10:8080(HTTP)、sso.mycompany.local:8443(HTTPS)
    • MyApp业务站点绑定地址:192.168.100.10:80(HTTP)、app.mycompany.local:443(HTTPS)

故障表现

  • HTTP访问模式(浏览器打开http://192.168.100.10):完整登录流程正常,业务应用跳转IdentityServer登录、身份校验、回调跳转回业务应用全链路通畅,回调地址为完整的http://192.168.100.10/connect/authorize/callback?client_id=[xxx]
  • HTTPS访问模式(浏览器打开https://app.mycompany.local):身份校验完成后流程中断,浏览器开发者工具中可以看到,IdentityServer发起的回调地址为残缺的https:///connect/authorize/callback?client_id=[xxx],缺失主机名与端口信息
  • 两个站点的部署二进制文件、配置、前端资源完全一致,仅IIS站点绑定的访问规则不同

根因

IdentityServer4 基于当前请求元信息拼接回调重定向地址时,未正确识别IIS托管场景下的HTTPS请求的主机、协议信息,导致生成的绝对路径缺失主机段,最终形成空主机名的异常回调地址。

修复步骤
  1. 在IdentityServer项目的Startup.cs配置管道的最靠前位置,启用ForwardedHeaders中间件,解析IIS转发的请求元信息
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        // 最优先执行转发头解析,避免后续管道读取到错误的请求信息
        app.UseForwardedHeaders(new ForwardedHeadersOptions
        {
            ForwardedHeaders = ForwardedHeaders.XForwardedFor 
                | ForwardedHeaders.XForwardedProto 
                | ForwardedHeaders.XForwardedHost
        });
        // 原有管道逻辑...
    }
    
  2. 调整转发头的安全校验规则,允许识别来自本机IIS代理的转发请求,避免被默认的代理白名单拦截
    public void ConfigureServices(IServiceCollection services)
    {
        services.Configure<ForwardedHeadersOptions>(options =>
        {
            // 将本机回环地址加入已知代理列表,适配IIS进程内/进程外托管模式
            options.KnownProxies.Add(IPAddress.Loopback);
            // 适配非标准端口的HTTPS场景,避免端口信息丢失
            options.RequireHeaderSymmetry = false;
        });
        // 原有服务注册逻辑...
    }
    
  3. 兜底配置:在IdentityServer的客户端定义中,显式配置HTTPS场景下的回调白名单,不依赖运行时自动推导地址
    • 将HTTPS对应的回调地址https://app.mycompany.local/connect/authorize/callback加入客户端的RedirectUris配置列表,确保即使运行时地址推导异常,也能使用预设的有效回调地址完成跳转。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.04 05:27:04