Udostępnij przez


DefaultKeyResolution.ShouldGenerateNewKey zmienił znaczenie

DefaultKeyResolution.ShouldGenerateNewKey nie odzwierciedla już, czy klucz domyślny jest bliski czasu wygaśnięcia.

Wersja wprowadzona

ASP.NET Core 9.0 (wersja zapoznawcza 3)

Poprzednie zachowanie

To była nieudokumentowana, ale spójna funkcja interfejsu API, która była stosowana, jeśli klucz domyślny mieścił się w ciągu dwóch dni (uproszczenie) od czasu jego wygaśnięcia. Czas realizacji zależał od interwału ICacheableKeyRingProvider sondowania, które nie powinny być od niego zależne IDefaultKeyResolver.ResolveDefaultKeyPolicy, 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 jest true, oznacza to, że albo nie ma klucza domyślnego, albo z innej przyczyny polityki (w wyspecjalizowanej implementacji IDefaultKeyResolver), należy wygenerować nowy klucz. ICacheableKeyRingProvider samodzielnie decyduje, czy termin wygaśnięcia jest na tyle bliski, aby uzasadnić wygenerowanie nowego klucza.

Typ zmiany przełamującej

Ta zmiana jest zmianą behawioralną.

Przyczyna zmiany

Ta zmiana została wprowadzona z dwóch powodów:

  • Aby zmienić logikę dotyczącą generowania kluczy w okresie zbliżającym się do 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, aby określić, czy oczekiwać wygaśnięcia, możesz sprawdzić właściwość klucza domyślnego ExpirationDate bezpośrednio.

Interfejsy API, których dotyczy problem

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