首页 > 解决方案 > 缩放 IdentityServer4 时出现消息“无法取消保护 message.State”

问题描述

当运行 IdentityServer4 的单个实例时,我们可以使用另一个身份提供者成功登录。一旦我们创建了多个 IdentityServer4 实例,如果结果由不同的服务器处理,则在用户进行身份验证后,相同的过程就会失败。

即使正确配置 ASP.NET Core DataProtection API 以在多服务器环境中运行,消息“无法取消保护 message.State”也会写入日志。

标签: identityserver4

解决方案


除了 ASP.NET Core DataProtection,IdentityServer4 的一些组件还依赖于 ASP.NET Core 分布式缓存。在我们的例子中,以下调用注册了一个依赖于的组件IDistributedCache

services.AddOidcStateDataFormatterCache();

在默认实现中,使用内存缓存会导致问题。删除该行后,IdentityServer4 在多服务器部署中工作。

另一种方法是将分布式缓存配置为在此处描述的多服务器环境中工作。


推荐阅读