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


Неизменяемость ключей и ключевые параметры в ASP.NET Core

После сохранения объекта в резервном хранилище его представление постоянно фиксируется. Новые данные можно добавить в резервное хранилище, но существующие данные никогда не могут быть мутированы. Основной целью этого поведения является предотвращение повреждения данных.

Одним из последствий этого поведения является то, что после записи ключа в резервное хранилище это неизменяемо. Его создание, активация и срок действия никогда не могут быть изменены, хотя его можно отменить с помощью IKeyManager. Кроме того, его базовые алгоритмические сведения, основной материал ключа и свойства шифрования при хранении также неизменяемы.

Если разработчик изменяет любой параметр, который влияет на сохраняемость ключей, эти изменения не будут входить в силу до следующего создания ключа, либо с помощью явного вызова IKeyManager.CreateNewKey или с помощью собственного автоматического создания ключей системы защиты данных. Параметры, влияющие на сохраняемость ключей, приведены следующим образом:

Если вам нужно, чтобы эти параметры выполнялись раньше следующей автоматической смены ключей, рассмотрите возможность явного вызова принудительного IKeyManager.CreateNewKey создания нового ключа. Не забудьте указать явную дату активации ({ сейчас + 2 дня } является хорошим правилом, чтобы разрешить время распространения изменений) и дату окончания срока действия в вызове.

Совет

Все приложения, касающиеся репозитория, должны указывать одинаковые параметры с IDataProtectionBuilder методами расширения. В противном случае свойства сохраненного ключа будут зависеть от конкретного приложения, вызывающего подпрограммы создания ключей.