Partager via


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é.

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