Partilhar via


DefaultKeyResolution.ShouldGenerateNewKey alterou o significado

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 tempo de espera foi baseada no intervalo de votação de , que não era algo IDefaultKeyResolver.ResolveDefaultKeyPolicy que deveria ter dependido ICacheableKeyRingProvider(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 de rutura

Esta mudança é uma mudança comportamental.

Razão para a alteração

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 arquivo 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 você estava consumindo IDefaultKeyResolver diretamente para determinar se a expiração estava pendente, você pode verificar a propriedade da ExpirationDate chave padrão diretamente.

APIs afetadas

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