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-Proto
或 X-Forwarded-Schema
值为 https,这不应该被拾取吗?从我从你的 BaseUrlMiddleware.cs
代码中可以看出,你通过阅读 Httpcontext.Request.Scheme
设置了 SetIdentityServerOrigin
,ASP.NET 核心模块后面将始终是 http。由于您所有的发现端点等都基于 GetIdentityServerBaseUrl
中的这个值,因此它们也将具有一个 http 模式。如果我错了或在 IdentityServer 4 中错过了此设置,请纠正我。
几乎 - IdentityServer 依赖于为 host/protocol 等设置的任何内容 - 此时在管道中。
在负载均衡器后面,您通常在 IdentityServer 之前的管道中有一些中间件,re-writes 这些值根据您的部署而定。
在发现 ASP.NET 核心模块充当 SSL 终结器并因此始终托管在 http 上之后,我的问题是如何将来自 https 地址的信息正确地传播到 IdentityServer 中。如果你设置了 headers X-Forwarded-Proto
或 X-Forwarded-Schema
值为 https,这不应该被拾取吗?从我从你的 BaseUrlMiddleware.cs
代码中可以看出,你通过阅读 Httpcontext.Request.Scheme
设置了 SetIdentityServerOrigin
,ASP.NET 核心模块后面将始终是 http。由于您所有的发现端点等都基于 GetIdentityServerBaseUrl
中的这个值,因此它们也将具有一个 http 模式。如果我错了或在 IdentityServer 4 中错过了此设置,请纠正我。
几乎 - IdentityServer 依赖于为 host/protocol 等设置的任何内容 - 此时在管道中。
在负载均衡器后面,您通常在 IdentityServer 之前的管道中有一些中间件,re-writes 这些值根据您的部署而定。