Identity Server 4 读取 "X-Forwarded-Proto" header 用于在反向代理后面托管

Identityserver 4 reading "X-Forwarded-Proto" header for hosting behind reverese proxy

在发现 ASP.NET 核心模块充当 SSL 终结器并因此始终托管在 http 上之后,我的问题是如何将来自 https 地址的信息正确地传播到 IdentityServer 中。如果你设置了 headers X-Forwarded-ProtoX-Forwarded-Schema 值为 https,这不应该被拾取吗?从我从你的 BaseUrlMiddleware.cs 代码中可以看出,你通过阅读 Httpcontext.Request.Scheme 设置了 SetIdentityServerOrigin,ASP.NET 核心模块后面将始终是 http。由于您所有的发现端点等都基于 GetIdentityServerBaseUrl 中的这个值,因此它们也将具有一个 http 模式。如果我错了或在 IdentityServer 4 中错过了此设置,请纠正我。

几乎 - IdentityServer 依赖于为 host/protocol 等设置的任何内容 - 此时在管道中。

在负载均衡器后面,您通常在 IdentityServer 之前的管道中有一些中间件,re-writes 这些值根据您的部署而定。

看这里https://github.com/aspnet/Docs/issues/2384