DefaultKeyResolution.ShouldGenerateNewKey 已更改含义

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

已引入的版本

ASP.NET Core 9.0 预览版 3

以前的行为

这是 API 的一种未记录但一致的特性,即如果默认密钥在其到期时间前两天之内(这一描述有些简化),那么ShouldGenerateNewKey 就是 true。 提前期的时间量基于 ICacheableKeyRingProvider 的轮询间隔,这不是 IDefaultKeyResolver.ResolveDefaultKeyPolicy 应该依赖的设置(这是因为,例如替代实现可能不知道这些详细信息)。

新行为

从 .NET 9 开始,如果是ShouldGenerateNewKeytrue,则表示没有默认密钥,或者出于其他策略原因(在专用实现IDefaultKeyResolver中),应生成新密钥。 ICacheableKeyRingProvider 自主决定是否到期时间足够接近,需要生成新的密钥。

破坏性变更的类型

此更改为行为更改

更改原因

此更改有两个原因:

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

如果有一个 IDefaultKeyResolver 尝试复制过期逻辑的实现,则可以删除该逻辑(但是,保留该逻辑也是正常的)。

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

受影响的 API

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