首页 > 解决方案 > 在网络场中运行 IdentityServer4 的提示

问题描述

有没有人有在负载均衡器后面的网络场(多个 IIS 服务器)中运行 IdentityServer4 的经验?我们在让两台服务器一起工作时遇到了一些问题。我没有看到 IdentityServer4 的部署指南。IdentityServer3 这里有一个。

https://identityserver.github.io/Documentation/docsv2/advanced/deployment.html

我们在 Startup.cs 中实现了 DataProtection。

StackExchange.Redis.ConnectionMultiplexer connectionMultiplexer = RedisConnectionFactory.GetConnection();
        RedisKey redisKey = appSettings.RedisKeyPrefix;
        services.AddDataProtection().PersistKeysToRedis(connectionMultiplexer, redisKey);

负载均衡器在第 7 层运行。它解密 SSL 并重新加密,以便它可以使用 X-Forwarded-For 值检查和更新标头。为此,我们在 Startup.cs 中添加了 ForwardedHeadersOptions,以便应用程序看到最终用户的 IP 而不是负载均衡器。

services.Configure<ForwardedHeadersOptions>(options =>
        {
            options.ForwardedHeaders =
                ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
            options.KnownNetworks.Add(new IPNetwork(...); 
            options.KnownProxies.Add(...); 
        });

我们的配置和操作存储都使用 SQL。

我是否遗漏了一些东西来确保场中的 2 台服务器可以一起工作?在检查场中其他服务器最初生成的 cookie 和令牌时,我们是否应该期望 cookie 和令牌验证都正确处理?

标签: identityserver4iis-8.5asp.net-core-2.1

解决方案


推荐阅读