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
.
Ação recomendada
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