根据 HTTPS 方案,IdentityServer4 IDX20108 无效

IdentityServer4 IDX20108 invalid as per HTTPS scheme

我是 IdentityServer4 (2.5) 和证书设置的新手,所以请多多包涵。我想我已经尽我所能。我在概念验证应用程序中将它与 ASP.Net Core 2.2.0 一起使用。我有 OpenIdConnect 和授权应用程序以及使用 cookie 和 X509Certificate2 的客户端。在我的本地机器上运行良好;但是,当我部署到 IIS 时,出现此错误:

System.InvalidOperationException: IDX20803: Unable to obtain configuration from: 'https://my.com/mpauth/.well-known/openid-configuration'. ---> System.ArgumentException: IDX20108: The address specified 'http://my.com/mpauth/.well-known/openid-configuration/jwks' is not valid as per HTTPS scheme. Please specify an https address for security reasons. If you want to test with http address, set the RequireHttps property  on IDocumentRetriever to false.

问题就在这里 - http://my.com/mpauth/.well-known/openid-configuration/jwks。如果我把它放在浏览器中,我会得到一个错误;但是,如果我将 http 更改为 https,我将获得数据。这是什么设置控制的?

TL;DR

在大多数情况下,IdentityServer 会延迟来自传入请求的基础 hostname/URI,但可能存在需要通过 IssuerUri and/or PublicOrigin 选项强制实施的部署方案 as documented here.

更多信息

您在异常中遇到的 URL 是发现查找的一部分。验证令牌是必需的(例如,在应用程序授权中间件中)。 应该有一个指向 .../.well-known/openid-configuration(主要发现文档)的第一个请求,它引用了其他几个 URI,其中一个应该是 jwks(签名密钥集)。在大多数情况下,openid-configuration 中的其他 URI 将指向您的身份服务器正在使用的相同主主机名和协议方案。在您的情况下,该方案似乎更改为 HTTP,这在当今时代可能是不需要的。

部署的 IdentityServer 是否可能位于负载 balancer/SSL 终止设备之后?这可能会导致行为。

我不确定 IIS 的详细信息,但可能还有某种默认 hostname/URI 的东西在起作用。