Partager via


DefaultKeyResolution.ShouldGenerateNewKey a changé de signification.

DefaultKeyResolution.ShouldGenerateNewKey ne reflète plus si la clé par défaut est proche de son délai d’expiration.

Version introduite

ASP.NET Core 9.0 Preview 3

Comportement précédent

Il s’agissait d’une fonctionnalité non documentée, mais cohérente, de l’API que ShouldGenerateNewKey était true si la clé par défaut était dans les deux jours (une sursimplification) de son délai d’expiration. Le temps d'anticipation était basé sur l'intervalle d'interrogation de ICacheableKeyRingProvider, ce qui n'était pas quelque chose dont IDefaultKeyResolver.ResolveDefaultKeyPolicy devait dépendre (puisque, par exemple, les autres implémentations ne seraient probablement pas conscientes de ces détails).

Nouveau comportement

À compter de .NET 9, si ShouldGenerateNewKey est true, cela indique qu’il n’existe aucune clé par défaut ou que, pour une autre raison stratégique (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 le délai 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 de la modification

Cette modification a été apportée pour deux raisons :

  • Pour modifier la logique relative à la génération de clés à l’approche du délai d’expiration.
  • Pour simplifier la création d’un IDefaultKeyResolver personnalisé.

Si vous disposez d’une IDefaultKeyResolver implémentation qui tente de répliquer la logique d’expiration, vous pouvez supprimer cette logique (toutefois, la laisser est correcte).

Si vous utilisiez IDefaultKeyResolver directement pour déterminer si l'expiration était en attente, vous pouvez vérifier la propriété ExpirationDate de la clé par défaut directement.

API affectées

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