身份服务器负载平衡注销问题

时间:2017-08-16 12:13:00

标签: docker asp.net-core identityserver4

我正在使用.net核心微服务架构在身份服务器4上工作,我已经按照这个参考应用程序请点击Here。我也使用了docker容器来部署分布式方法应用程序。当它是在发展,即当地环境。

但是在生产中我在身份服务器上使用负载均衡,因为负载平衡我正面临注销问题。

前。我已经为生产目的创建了3个身份服务器实例,即A,B和C,根据用户负载,它会自动在实例之间切换。现在问题是当用户在几秒钟后登录A实例时它会自动请求B或C实例因为负载平衡,所以问题是用户登录A实例并且当前请求由B或C实例处理,因此服务器将如何知道用户是否已登录,这就是为什么它注销我并重定向到日志在屏幕上。

编辑: Please check with Identity server configuration and operational store with signin certificate

1 个答案:

答案 0 :(得分:0)

我相信你的问题是由于asp.net核心中的数据保护,每个容器将使用不同的密钥来加密/解密数据。要验证只运行容器的一个实例,如果这可以解决您的问题,请查看:https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/

public class XmlToDbRepository : IXmlRepository
        {
            private readonly IPersistKeyDb _persistKeyDb;

            public XmlToDbRepository(IPersistKeyDb persistKeyDb)
            {
                _persistKeyDb = persistKeyDb;
            }

            public IReadOnlyCollection<XElement> GetAllElements()
            {
                return _persistKeyDb.GetAll().Select(i => XElement.Parse(i.Key)).ToList().AsReadOnly();
            }

            public void StoreElement(XElement element, string friendlyName)
            {
                _persistKeyDb.Store(friendlyName,element.ToString(SaveOptions.None));
            }
        }

我认为这是你会感兴趣的。