Почему ASP. NET Core AddDataProtection Keys нельзя загрузить из AppSettings. json - PullRequest
0 голосов
/ 24 марта 2020

Я хочу знать, почему нет простого способа загрузить ваши ключи безопасности из AppSettings. json вместо загрузки их из файловой системы как XML?

Вот пример из документации Microsoft.

services.AddDataProtection()
    .PersistKeysToFileSystem("{PATH TO COMMON KEY RING FOLDER}")
    .SetApplicationName("SharedCookieApp");

services.ConfigureApplicationCookie(options => {
    options.Cookie.Name = ".AspNet.SharedCookie";
    options.Cookie.Path = "/";
});

Мне просто интересно, почему нет ничего похожего на следующее.

services.AddDataProtection()
    .PersistKeysToAppSetings("EncryptionKeys")
    .SetApplicationName("SharedCookieApp");

services.ConfigureApplicationCookie(options => {
    options.Cookie.Name = ".AspNet.SharedCookie";
    options.Cookie.Path = "/";
});

Я не понимаю, почему хранение ключей в XML Файл будет отличаться от их хранения в ваших AppSettigs. json. Теперь я знаю, что формат другой, но не более или менее безопасный? правильно?

Я просто хочу быть уверен, что ничего не пропустил.

Допущения:

  1. AppSettings. json так же безопасен, как и некоторые другие XML файл на диске
  2. Azure AppSettings надежно хранятся и могут быть доступны только для разрешенных учетных записей
  3. Azure Значения AppSettings переопределяют любые загруженные значения "разработчика"
  4. Разработчики не будут хранить свои производственные ключи в исходном коде, верно? :)
  5. Я знаю, что это не будет работать для ключей с истекающим сроком действия / утилизации

1 Ответ

0 голосов
/ 25 марта 2020

«Это сложно»

  1. Мы создаем ключи по требованию.
  2. Мы создаем несколько ключей, незадолго до истечения срока действия ключа мы создаем новый.
  3. Нам нужны ключи для синхронизации между приложениями.
  4. Нам нужны ключи для шифрования где это возможно.

AppSettings не дает нам ничего из этого, приложения не могут обновлять свои собственные файлы настроек, так что исключаются 1 и 2, веб-сайты не копируют измененный файл настроек приложения между экземплярами, которые исключают 3, и вы не можете зашифровать вещи в настройках приложения, которые исключают 4.

Формат не проблема, вы можете написать свою собственную оболочку шифрования, чтобы справиться с # 4, но остальное все еще необходимо, так что теперь вам нужно изменить, как работают настройки, чтобы они могли читать / писать (и безопасно читать и писать), а затем убедить веб-хосты поддерживать синхронизацию вашего файла пользовательских настроек между экземплярами .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...