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.
Empfohlene Maßnahme
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