DefaultKeyResolution.ShouldGenerateNewKey zmienił znaczenie
DefaultKeyResolution.ShouldGenerateNewKey
nie odzwierciedla już, czy klucz domyślny jest bliski czasu wygaśnięcia.
Wprowadzona wersja
ASP.NET Core 9.0 (wersja zapoznawcza 3)
Poprzednie zachowanie
To była nieudokumentowana, ale spójna funkcja interfejsu API, która ShouldGenerateNewKey
była, jeśli klucz domyślny mieścił true
się w ciągu dwóch dni (oversimplification) jego czasu wygaśnięcia. Czas realizacji był oparty na interwale ICacheableKeyRingProvider
sondowania , który nie powinien być zależny IDefaultKeyResolver.ResolveDefaultKeyPolicy
od (ponieważ na przykład alternatywne implementacje prawdopodobnie nie byłyby świadome tych szczegółów).
Nowe zachowanie
Począwszy od platformy .NET 9, jeśli ShouldGenerateNewKey
ma true
wartość , oznacza to, że nie ma klucza domyślnego lub że z innej przyczyny zasad (w wyspecjalizowanej implementacji IDefaultKeyResolver
programu ), należy wygenerować nowy klucz. Podejmuje ICacheableKeyRingProvider
własną decyzję o tym, czy czas wygaśnięcia jest wystarczająco blisko, aby uzasadnić wygenerowanie nowego klucza.
Typ zmiany powodującej niezgodność
Ta zmiana jest zmianą behawioralną.
Przyczyna wprowadzenia zmiany
Ta zmiana została wprowadzona z dwóch powodów:
- Aby zmienić logikę wokół generowania kluczy w pobliżu czasu wygaśnięcia.
- Aby ułatwić implementację niestandardowego
IDefaultKeyResolver
elementu .
Zalecana akcja
Jeśli masz implementację IDefaultKeyResolver
, która próbuje replikować logikę wygaśnięcia, możesz usunąć tę logikę (jednak pozostawienie jej również jest w porządku).
Jeśli używasz IDefaultKeyResolver
bezpośrednio w celu określenia, czy wygaśnięcie było oczekujące, możesz bezpośrednio sprawdzić właściwość klucza ExpirationDate
domyślnego.
Dotyczy interfejsów API
Microsoft.AspNetCore.DataProtection.KeyManagement.Internal.DefaultKeyResolution.ShouldGenerateNewKey