Compartir a través de


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.

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