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