Compartilhar via


O significado de DefaultKeyResolution.ShouldGenerateNewKey foi alterado

DefaultKeyResolution.ShouldGenerateNewKey não reflete mais se a chave padrão está perto do tempo de expiração.

Versão introduzida

ASP.NET Core 9.0 Versão Prévia 3

Comportamento anterior

Era um recurso não documentado, mas consistente, da API que ShouldGenerateNewKey era true se a chave padrão estava dentro de dois dias (uma simplificação excessiva) de seu tempo de expiração. A quantidade de tempo de antecedência foi baseada no intervalo de sondagem de ICacheableKeyRingProvider, e IDefaultKeyResolver.ResolveDefaultKeyPolicy não deveria depender disso (visto que, por exemplo, implementações alternativas provavelmente não estariam cientes desses detalhes).

Novo comportamento

A partir do .NET 9, se ShouldGenerateNewKey estiver true, indica que não há 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 decide por si próprio se o tempo de expiração está próximo o suficiente para justificar a geração de uma nova chave.

Tipo de mudança disruptiva

Esta é uma alteração comportamental.

Motivo da alteração

Essa alteração foi feita por dois motivos:

  • Para alterar a lógica da geração de chaves próximo ao momento da expiração.
  • Para simplificar a implementação de um IDefaultKeyResolverpersonalizado.

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

Se você estava consumindo IDefaultKeyResolver diretamente para determinar se a expiração estava pendente, poderá verificar diretamente a propriedade ExpirationDate da chave padrão.

APIs afetadas

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