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



我正在使用.NET Core微服务架构在身份服务器4上工作,我遵循了这个参考应用程序,请单击此处.我还使用Docker容器来部署分布式方法应用程序.它在开发中(即本地环境(时工作正常。

但是在生产环境中,我在身份服务器上使用负载平衡,由于负载平衡,我面临注销问题。

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

编辑: 请使用登录证书检查身份服务器配置和操作存储

我相信您遇到的问题是由于 asp.net 核心中的数据保护,每个容器将使用不同的密钥来加密/解密数据。要验证只运行容器的一个实例,如果这解决了您的问题,请查看: https://learn.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));
}
}

我想这是你会感兴趣的。

最新更新