Partilhar via


DefaultKeyResolution.ShouldGenerateNewKey tem um significado alterado

DefaultKeyResolution.ShouldGenerateNewKey não reflete mais se a chave padrão está próxima de seu tempo de expiração.

Versão introduzida

ASP.NET Core 9.0 Preview 3

Comportamento anterior

Era um recurso não documentado, mas consistente, da API que ShouldGenerateNewKey era true se a chave padrão estivesse dentro de dois dias (uma simplificação excessiva) de seu tempo de expiração. A quantidade de prazo de execução foi baseada no intervalo de sondagem de ICacheableKeyRingProvider, que não era algo de que IDefaultKeyResolver.ResolveDefaultKeyPolicy devesse ter dependido (uma vez que, por exemplo, implementações alternativas provavelmente não estariam cientes desses detalhes).

Novo comportamento

A partir do .NET 9, se ShouldGenerateNewKey for true, indica que não há nenhuma chave padrão ou que, por algum outro motivo de política (em uma implementação especializada de IDefaultKeyResolver), uma nova chave deve ser gerada. O ICacheableKeyRingProvider toma sua própria decisão sobre se o tempo de expiração é próximo o suficiente para justificar a geração de uma nova chave.

Tipo de mudança disruptiva

Esta alteração é de natureza comportamental .

Motivo da mudança

Esta alteração foi feita por duas razões:

  • Para alterar a lógica em torno da geração de chaves perto do tempo de expiração.
  • Para simplificar a implementação de um elemento IDefaultKeyResolver.

Se você tiver uma IDefaultKeyResolver implementação que tenta replicar a lógica de expiração, você pode remover essa lógica (no entanto, deixá-la também é bom).

Se estivesse utilizando IDefaultKeyResolver diretamente para determinar se a expiração estava pendente, pode verificar a propriedade da chave padrão ExpirationDate diretamente.

APIs afetadas

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