Мне нужен общий ключ DataProtection для моего проекта ASP. NET Core Web Apps и Web API.
Данные, защищенные приложением, которые я создаю для режима отладки, против режима выпуска и данные, которые создается непосредственно в опубликованном веб-API, как-то не может быть последовательно незащищенным. Я получаю сообщение об ошибке при снятии защиты «Полезная нагрузка недействительна» или «Брелок не найден»
Ранее я использовал PersistKeysToLocalFileSystem и создал 2 разных ключа для Web App и Web Api .., так что ошибка имела смысл, потому что Я использовал вспомогательные ключи для защиты и снятия защиты.
Но позже я переместил ключ. xml в Azure Хранилище BLOB-объектов и по-прежнему получаю сообщение об ошибке, если я переключаюсь с режима отладки на выпуск или если я хочу для отладки данных, созданных с помощью опубликованного веб-приложения.
Запуск веб-приложения
CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(StringHelper.SecureStringToString("connectionstring"));
CloudBlobClient cloudBlobClient = cloudStorageAccount.CreateCloudBlobClient();
CloudBlobContainer blobContainer = cloudBlobClient.GetContainerReference("protection");
services.AddDataProtection()
.PersistKeysToAzureBlobStorage(blobContainer.GetBlockBlobReference("protectionkey"))
.SetDefaultKeyLifetime(TimeSpan.FromDays(730)); // Exipres in 2 years
Запуск веб-API
CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(StringHelper.SecureStringToString("connectionstring"));
CloudBlobClient cloudBlobClient = cloudStorageAccount.CreateCloudBlobClient();
CloudBlobContainer blobContainer = cloudBlobClient.GetContainerReference("protection");
services.AddDataProtection()
.PersistKeysToAzureBlobStorage(blobContainer.GetBlockBlobReference("protectionkey"))
.SetDefaultKeyLifetime(TimeSpan.FromDays(730)); // Exipres in 2 years
В обоих проектах используется один и тот же ключ!
Почему централизованный ключ. xml, сохраняемый в Azure blob, зависит от конфигурации времени выполнения asp . net основное веб-приложение?
Как мы можем решить эту проблему, чтобы я мог получить доступ к данным в разных конфигурациях?