Freigeben über


DefaultKeyResolution.ShouldGenerateNewKey hat eine geänderte Bedeutung

DefaultKeyResolution.ShouldGenerateNewKey gibt nicht mehr an, ob der Standardschlüssel nahe an seiner Ablaufzeit liegt.

Eingeführt in Version

ASP.NET Core 9.0 Vorschauversion 3

Vorheriges Verhalten

Es handelte sich um ein nicht dokumentiertes, aber konsistentes Feature der API, woShouldGenerateNewKey true war, wenn der Standardschlüssel innerhalb von zwei Tagen (eine übermäßige Vereinfachung) seiner Ablaufzeit war. Die Dauer der Vorlaufzeit basiert auf dem Abrufintervall von ICacheableKeyRingProvider, von dem IDefaultKeyResolver.ResolveDefaultKeyPolicy nicht abhängig hätte sein sollen (da z. B. alternative Implementierungen diese Details wahrscheinlich nicht kennen).

Neues Verhalten

Ab .NET 9 bedeutet dies, dass wenn ShouldGenerateNewKey true ist, entweder kein Standardschlüssel vorhanden ist oder dass aus einem anderen Richtliniengrund (in einer spezialisierten Implementierung von IDefaultKeyResolver) ein neuer Schlüssel generiert werden soll. ICacheableKeyRingProvider trifft eine eigene Entscheidung darüber, ob die Ablaufzeit nah genug ist, um die Generierung eines neuen Schlüssels zu gewährleisten.

Typ des Breaking Changes

Diese Änderung ist eine Verhaltensänderung.

Grund für die Änderung

Diese Änderung wurde aus zwei Gründen vorgenommen:

  • Um die Logik um die Schlüsselgenerierung in der Nähe der Ablaufzeit zu ändern.
  • Um die Implementierung eines benutzerdefinierten IDefaultKeyResolver zu vereinfachen.

Wenn Sie über eine IDefaultKeyResolver Implementierung verfügen, die versucht, die Ablauflogik zu replizieren, können Sie diese Logik entfernen (Belassen ist auch in Ordnung).

Wenn Sie IDefaultKeyResolver direkt konsumierten, um festzustellen, ob der Ablauf bevorsteht, können Sie die ExpirationDate Eigenschaft des Standardschlüssels direkt überprüfen.

Betroffene APIs

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