Identityserver4 Identityserver 4正在读取“;“X-转发-Proto”;用于在混响代理之后托管的标头
在发现ASP.NET核心模块充当SSL终止符,因此总是在http上托管之后,我的问题是如何将来自https地址的消息正确传播到IdentityServer。如果您已将标题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。
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所做的出色工作!