DefaultKeyResolution.ShouldGenerateNewKey a une signification légèrement modifié
DefaultKeyResolution.ShouldGenerateNewKey
ne reflète plus si la clé par défaut est proche de sa date d’expiration.
Version introduite
ASP.NET Core 9.0 Préversion 3
Comportement précédent
Il s’agissait d’une fonctionnalité non documentée, mais cohérente, de l’API dont ShouldGenerateNewKey
avait la valeur true
si la clé par défaut se situait dans les deux jours (une simplification excessive) de sa date d’expiration. Le délai était basé sur l’intervalle d’interrogation de ICacheableKeyRingProvider
qui constituait un élément dont IDefaultKeyResolver.ResolveDefaultKeyPolicy
était dépendant (car, par exemple, d’autres implémentations n’auraient probablement pas été au fait de ces détails).
Nouveau comportement
À partir de .NET 9, si ShouldGenerateNewKey
a la valeur true
, elle indique qu’il n’existe aucune clé par défaut ou que pour toute autre raison de stratégie (dans une implémentation spécialisée de IDefaultKeyResolver
), une nouvelle clé doit être générée. Le ICacheableKeyRingProvider
prend sa propre décision quant à savoir si la date d’expiration est suffisamment proche pour justifier la génération d’une nouvelle clé.
Type de changement cassant
Ce changement est un changement de comportement.
Raison du changement
Ce changement a été effectué pour deux raisons :
- Pour modifier la logique autour de la génération de clé proche de la date d’expiration.
- Pour simplifier l’implémentation d’un
IDefaultKeyResolver
personnalisé.
Action recommandée
Si vous disposez d’une implémentation IDefaultKeyResolver
qui tente de répliquer la logique d’expiration, vous pouvez la supprimer (toutefois, il est acceptable de la laisser).
Si vous consommiez IDefaultKeyResolver
directement pour déterminer si l’expiration était en attente, vous pouvez vérifier directement la propriété ExpirationDate
de la clé par défaut.
API affectées
Microsoft.AspNetCore.DataProtection.KeyManagement.Internal.DefaultKeyResolution.ShouldGenerateNewKey