Dela via


DefaultKeyResolution.ShouldGenerateNewKey har ändrat betydelse

DefaultKeyResolution.ShouldGenerateNewKey visar inte längre om standardnyckeln är nära dess förfallotid.

Version lanserad

ASP.NET Core 9.0 Förhandsversion 3

Tidigare beteende

Det var en odokumenterad, men konsekvent, funktion i API:n som innebar att ShouldGenerateNewKey var true om standardnyckeln var inom två dagar från dess utgångstid (en översimplifiering). Ledtiden baserades på polling-intervallet ICacheableKeyRingProvider, vilket inte var något IDefaultKeyResolver.ResolveDefaultKeyPolicy borde ha varit beroende av (eftersom alternativa implementeringar förmodligen inte skulle känna till dessa detaljer).

Nytt beteende

Från och med .NET 9, om ShouldGenerateNewKey är true, anger det att det antingen inte finns någon standardnyckel eller att av någon annan principorsak (i en specialiserad implementering av IDefaultKeyResolver) ska en ny nyckel genereras. Fattar ICacheableKeyRingProvider ett eget beslut om förfallotiden är tillräckligt nära för att generera en ny nyckel.

Typ av brytande ändring

Den här ändringen är en beteendeförändring.

Orsak till ändring

Den här ändringen gjordes av två skäl:

  • Ändra logiken kring nyckelgenerering nära förfallotid.
  • För att göra det enklare att implementera en anpassad IDefaultKeyResolver.

Om du har en IDefaultKeyResolver implementering som försöker replikera förfallologik kan du ta bort den logiken (men det är också bra att lämna den).

Om du använder IDefaultKeyResolver direkt för att avgöra om förfall är väntande kan du kontrollera standardnyckelns ExpirationDate egenskap direkt.

Berörda API:er

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