Udostępnij za pośrednictwem


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 ICacheableKeyRingProvidersondowania , 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 truewartość , oznacza to, że nie ma klucza domyślnego lub że z innej przyczyny zasad (w wyspecjalizowanej implementacji IDefaultKeyResolverprogramu ), 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 IDefaultKeyResolverelementu .

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