带有 ARR(应用程序请求路由)的 IdentityServer 4

IdentityServer 4 with ARR (Application Request Routing)

我正在尝试在双节点 ARR 设置中获取 IdentityServer 4 运行。我配置了其他双节点 Web 应用程序,但 IdentityServer 不想正常运行。服务器仅为 HTTPS 设置。当我在单个站点中使用它时,一切都很好,并且所有请求都是 https://... 但是在 ARR 设置中,请求开始如下:

https://identityserver.local/.well-known/openid-configuration http://identityserver.local/connect/authorize?client_id=....

第二个请求导致 404。当我将其作为常规单个站点时,第二个请求是:

https:/identityserver.local/connect/authorize?client_id=....

为什么 运行 ARR 是 http 而不是 https?

这一两步的解决方案: 首先,我修复了转发 headers:

services.Configure<ForwardedHeadersOptions>(options =>
{
    options.ForwardedHeaders = ForwardedHeaders.XForwardedProto;
});

接下来,配置数据保护,以便应用程序的不同实例共享加密密钥。

services.AddDataProtection()
        .SetApplicationName("MyAspNetCoreSample")
        .PersistKeysToFileSystem(new DirectoryInfo(@"path\to\shared\folder"));

希望这对某人有所帮助。