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

问题描述 投票:-2回答:1

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

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

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

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

docker asp.net-core identityserver4
1个回答
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));
            }
        }

我想这是你会感兴趣的那个。

© www.soinside.com 2019 - 2024. All rights reserved.