Поделиться через


DefaultKeyResolution.ShouldGenerateNewKey изменил значение

DefaultKeyResolution.ShouldGenerateNewKey больше не отражает, близок ли ключ по умолчанию к сроку действия.

Представленные версии

ASP.NET Core 9.0 (предварительная версия 3)

Прежнее поведение

Это была незадокументированная, но согласованная функция API, которая ShouldGenerateNewKeytrue была, если ключ по умолчанию был в течение двух дней (превышение срока действия). Время на основе интервала ICacheableKeyRingProviderопроса, от которого не IDefaultKeyResolver.ResolveDefaultKeyPolicy должно зависеть (например, альтернативные реализации, вероятно, не будут знать об этих деталях).

Новое поведение

Начиная с .NET 9, ShouldGenerateNewKeytrueто он указывает, что ключ по умолчанию отсутствует или что по какой-либо другой причине политики (в специализированной реализации IDefaultKeyResolver), должен быть создан новый ключ. Он ICacheableKeyRingProvider принимает собственное решение о том, достаточно ли время истечения срока действия, чтобы гарантировать создание нового ключа.

Тип критического изменения

Это изменение поведения.

Причина изменения

Это изменение было внесено по двум причинам:

  • Изменение логики вокруг создания ключей почти во время окончания срока действия.
  • Чтобы упростить реализацию пользовательского IDefaultKeyResolverэлемента.

Если у вас есть IDefaultKeyResolver реализация, которая пытается реплика оставить логику истечения срока действия, можно удалить эту логику (однако, оставляя ее хорошо).

Если вы используете IDefaultKeyResolver непосредственно, чтобы определить, ожидалось ли истечение срока действия, можно проверка свойство ключа ExpirationDate по умолчанию напрямую.

Затронутые API

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