DefaultKeyResolution.ShouldGenerateNewKey tiene un significado distinto
DefaultKeyResolution.ShouldGenerateNewKey
ya no refleja si la clave predeterminada está cerca de su fecha de expiración.
Versión introducida
ASP.NET Core 9.0 versión preliminar 3
Comportamiento anterior
Se trata de una característica no documentada, pero coherente, de la API que ShouldGenerateNewKey
era true
si la clave predeterminada estaba a menos de dos días (una simplificación exagerada) de su tiempo de expiración. La cantidad de tiempo de espera se basaba en el intervalo de sondeo de ICacheableKeyRingProvider
, que no era algo de lo que IDefaultKeyResolver.ResolveDefaultKeyPolicy
debería haber dependido (ya que, por ejemplo, las implementaciones alternativas probablemente no serían conscientes de estos detalles).
Comportamiento nuevo
A partir de .NET 9, si ShouldGenerateNewKey
es true
, indica que no hay ninguna clave predeterminada o que por algún otro motivo de directiva (en una implementación especializada de IDefaultKeyResolver
), se debe generar una nueva clave. El ICacheableKeyRingProvider
toma su propia decisión sobre si el tiempo de expiración está lo suficientemente cerca como para garantizar la generación de una nueva clave.
Tipo de cambio importante
Este es un cambio de comportamiento.
Motivo del cambio
Este cambio se ha realizado por dos razones:
- Para cambiar la lógica en torno a la generación de claves cerca de la fecha de expiración.
- Para facilitar la implementación de un
IDefaultKeyResolver
personalizado.
Acción recomendada
Si tiene una implementación IDefaultKeyResolver
que intenta replicar la lógica de expiración, puede quitar esa lógica (sin embargo, dejarla también está bien).
Si estaba consumiendo IDefaultKeyResolver
directamente para determinar si la expiración estaba pendiente, puede comprobar directamente la propiedad ExpirationDate
de la clave predeterminada.
API afectadas
Microsoft.AspNetCore.DataProtection.KeyManagement.Internal.DefaultKeyResolution.ShouldGenerateNewKey