DefaultKeyResolution.ShouldGenerateNewKey 已更改含义
DefaultKeyResolution.ShouldGenerateNewKey
不再反映默认密钥是否接近其到期时间。
引入的版本
ASP.NET Core 9.0 预览版 3
旧行为
这是该 API 的一项未记录但一致的功能,即如果默认密钥在距其过期时间两天范围内(过度简化值),则 ShouldGenerateNewKey
为 true
。 提前期的时间量基于 ICacheableKeyRingProvider
的轮询间隔,这不是 IDefaultKeyResolver.ResolveDefaultKeyPolicy
应该依赖的设置(这是因为,例如替代实现可能不知道这些详细信息)。
新行为
从 .NET 9 开始,如果 ShouldGenerateNewKey
为 true
,则指示默认密钥不存在,或者出于其他策略原因(在 IDefaultKeyResolver
的专门实现中)应生成新密钥。 ICacheableKeyRingProvider
可自行判定是否已足够接近到期时间,以确保生成新的密钥。
中断性变更的类型
此更改为行为更改。
更改原因
此项更改出于以下两个原因:
- 更改临近到期时间时密钥生成的逻辑。
- 简化自定义
IDefaultKeyResolver
的实现。
建议的操作
如果拥有尝试复制过期逻辑的 IDefaultKeyResolver
实现,则可以移除该逻辑(但也可以保留该逻辑)。
如果直接使用 IDefaultKeyResolver
来确定过期是否挂起,则可以直接检查默认密钥的 ExpirationDate
属性。
受影响的 API
Microsoft.AspNetCore.DataProtection.KeyManagement.Internal.DefaultKeyResolution.ShouldGenerateNewKey