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

Caddy反向代理后Duende IdentityServer的OpenID配置返回HTTP端点问题

问题根因

IdentityServer生成OIDC配置端点时,使用的请求协议来自Caddy向它发起的内部HTTP请求,因此所有端点默认使用http://前缀,和公网实际使用的HTTPS协议不一致。

方案实现

无需为IdentityServer单独配置证书,只要配置反向代理头转发和ASP.NET Core的转发头信任即可,两步即可解决:

1. 修改Caddyfile配置,透传公网请求信息

在反向代理规则中添加请求头转发,把公网的HTTPS协议、真实域名信息传给IdentityServer:

identity.fading-flame.com {
    reverse_proxy http://identity-server-prod {
        # 转发公网真实域名
        header_up X-Forwarded-Host {host}
        # 转发公网真实协议为HTTPS
        header_up X-Forwarded-Proto https
    }
}

2. 配置IdentityServer信任反向代理转发头

ASP.NET Core默认不会直接信任来自反向代理的转发头,需要显式配置UseForwardedHeaders中间件,注意该中间件必须放在所有其他中间件的最开头,包括UseRouting、UseIdentityServer等,同时删除你之前添加的UseHttpsRedirect中间件(内部通信走HTTP即可,加了会导致Caddy无法访问IdentityServer)。

首先在启动配置中添加转发头相关服务:

using Microsoft.AspNetCore.HttpOverrides;

// 其他服务配置...
services.Configure<ForwardedHeadersOptions>(options =>
{
    options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | 
                                ForwardedHeaders.XForwardedProto | 
                                ForwardedHeaders.XForwardedHost;
    // Docker内部网络环境下可直接清空信任列表,允许所有内部代理的转发头
    // 若需要更高安全性,可将Caddy容器的固定IP添加到KnownProxies中
    options.KnownProxies.Clear();
    options.KnownNetworks.Clear();
});

services.AddIdentityServer(options =>
{
    options.IssuerUri = $"https://{Environment.GetEnvironmentVariable("IDENTITY_BASE_URI")}";
    options.EmitStaticAudienceClaim = true;
})
// 其余IdentityServer配置不变...

然后在中间件管道最开头启用转发头:

var app = builder.Build();

// 必须放在第一行,优先处理转发头
app.UseForwardedHeaders();

// 后续其他中间件保持不变,不要加UseHttpsRedirect
// app.UseHttpsRedirection(); // 删掉这行
app.UseRouting();
app.UseIdentityServer();
// 其他中间件...

验证效果

重启Caddy和IdentityServer容器后,再次访问/.well-known/openid-configuration,所有端点都会自动变为https://identity.fading-flame.com前缀,Blazor应用即可正常完成身份认证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:57:03