Identityserver4 Identityserver 4正在读取“;“X-转发-Proto”;用于在混响代理之后托管的标头

Identityserver4 Identityserver 4正在读取“;“X-转发-Proto”;用于在混响代理之后托管的标头,identityserver4,Identityserver4,在发现ASP.NET核心模块充当SSL终止符,因此总是在http上托管之后,我的问题是如何将来自https地址的消息正确传播到IdentityServer。如果您已将标题X-Forwarded-Proto或X-Forwarded-Schema设置为https值,是否不应拾取该值?从您的BaseUrlMiddleware.cs代码中可以看出,您通过读取Httpcontext.Request.Scheme设置了SetIdentityServerOrigin,ASP.NET核心模块后面始终是http。

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

几乎-IdentityServer依赖于为主机/协议等设置的任何内容-此时在管道中

在负载平衡器后面,您通常在IdentityServer之前的管道中有一些中间件,这些中间件根据您的部署重新写入这些值


请参见此处

谢谢@leastprivilege的回答。我仍然很难让
UseForwardedHeaders
中间件在设置了“https”和“http”值的X-Forwarded-Proto头上找到信息,所以我想我错过了一些东西。当我手动设置
context.Request.Scheme=“https”
IdentityServer将根据这一点生成端点,并使用您描述的https模式。但现在我可以继续我的IdentityServer实现,并用SSL托管它。感谢您对IdentityServer 4所做的出色工作!