DefaultKeyResolution.ShouldGenerateNewKey 已更改含义

DefaultKeyResolution.ShouldGenerateNewKey 不再反映默认密钥是否接近其到期时间。

引入的版本

ASP.NET Core 9.0 预览版 3

旧行为

这是该 API 的一项未记录但一致的功能,即如果默认密钥在距其过期时间两天范围内(过度简化值),则 ShouldGenerateNewKeytrue。 提前期的时间量基于 ICacheableKeyRingProvider 的轮询间隔,这不是 IDefaultKeyResolver.ResolveDefaultKeyPolicy 应该依赖的设置(这是因为,例如替代实现可能不知道这些详细信息)。

新行为

从 .NET 9 开始,如果 ShouldGenerateNewKeytrue,则指示默认密钥不存在,或者出于其他策略原因(在 IDefaultKeyResolver 的专门实现中)应生成新密钥。 ICacheableKeyRingProvider 可自行判定是否已足够接近到期时间,以确保生成新的密钥。

中断性变更的类型

此更改为行为更改

更改原因

此项更改出于以下两个原因:

  • 更改临近到期时间时密钥生成的逻辑。
  • 简化自定义 IDefaultKeyResolver 的实现。

如果拥有尝试复制过期逻辑的 IDefaultKeyResolver 实现,则可以移除该逻辑(但也可以保留该逻辑)。

如果直接使用 IDefaultKeyResolver 来确定过期是否挂起,则可以直接检查默认密钥的 ExpirationDate 属性。

受影响的 API

  • Microsoft.AspNetCore.DataProtection.KeyManagement.Internal.DefaultKeyResolution.ShouldGenerateNewKey