Я занимаюсь этим несколько дней и не вижу, что я делаю неправильно. Я был бы признателен, если кто-то может показать мне, что я делаю неправильно.Почему AspNet Core IDataProtection Azure Storage с использованием внутреннего ключа
Я прошел через несколько итераций. Это то, что я сейчас имею, что не работает.
Startup.cs
var creds = new StorageCredentials(settings.CloudStorageAccount, settings.CloudStorageKey);
var account = new CloudStorageAccount(creds, true);
var blobClient = account.CreateCloudBlobClient();
var container = blobClient.GetContainerReference($"{dpsFolder}-{_env.EnvironmentName}".ToLower());
container.CreateIfNotExistsAsync().GetAwaiter().GetResult();
services.AddDataProtection()
.SetApplicationName(settings.ApplicationName)
.PersistKeysToAzureBlobStorage(container, dpsFileName);
контроллер т е р
public ExternalSettingController([FromServices] IExternalSettingRepo repo,
[FromServices] IOptions<AppSettings> opts,
[FromServices] ILogger<ExternalSettingController> logger,
[FromServices] IHostingEnvironment env,
[FromServices] IDataProtectionProvider dpp)
: base(opts, repo, logger)
{
_dataProtector = dpp.CreateProtector("blah.Integration");
}
Фактический вызов в Получ
toReturn.Plain = _dataProtector.Unprotect(found.SettingValue);
Все, кажется, сработал хорошо, как лучше, как я могу сказать, через отладчик. Настройки верны. Когда вызов Unprotect сделан, система выбирает использовать один из ключей из C: \ Users \ blah \ AppData \ Local \ ASP.NET \ DataProtection-Keys вместо одного, загруженного в хранилище Azure Blob.
Немного фона, поскольку это может повлиять на вещи. Я изначально создал отдельный класс DataProtectionService, который шифровал с помощью IDataProtection, используя ключ, который я поддерживал для проекта. Это не устанавливается в читаемом месте на Azure, поэтому мне пришлось переключаться там, где он хранится. Это ключевой момент в Azure Storage. Данные, которые я пытаюсь расшифровать, были первоначально зашифрованы, когда один и тот же ключ хранился локально.
Что я делаю неправильно?
@ Mr Lister благодарит за изменения. –