identityserver4 - 缩放 IdentityServer4 时出现消息“无法取消保护 message.State”
问题描述
当运行 IdentityServer4 的单个实例时,我们可以使用另一个身份提供者成功登录。一旦我们创建了多个 IdentityServer4 实例,如果结果由不同的服务器处理,则在用户进行身份验证后,相同的过程就会失败。
即使正确配置 ASP.NET Core DataProtection API 以在多服务器环境中运行,消息“无法取消保护 message.State”也会写入日志。
解决方案
除了 ASP.NET Core DataProtection,IdentityServer4 的一些组件还依赖于 ASP.NET Core 分布式缓存。在我们的例子中,以下调用注册了一个依赖于的组件IDistributedCache
:
services.AddOidcStateDataFormatterCache();
在默认实现中,使用内存缓存会导致问题。删除该行后,IdentityServer4 在多服务器部署中工作。
另一种方法是将分布式缓存配置为在此处描述的多服务器环境中工作。
推荐阅读
- google-tag-manager - GTM Strips URL 片段破坏功能
- sql - 多个 WHERE 语句后跟多个使用 LIKE 的列
- android - 在 Android 上将 m4a 转换为 wav
- java - Java 获取巨大的结果集
- git - 从 Bitbucket 推送标签时 Azure Pipelines CI 未触发
- python - 在 python 输出中排除模式
- python - 创建具有随机值的列表数组
- d3.js - D3.js - 沿弧线添加标签
- windows - 使用批处理文件用真实数据覆盖可移动媒体上的可用空间
- jquery - Laravel 在 ajax 编辑模式表单上使用用户角色填充复选框角色字段