Я хочу, чтобы мое приложение могло инициализировать хранилище ключей защиты данных при запуске.
Но оно будет работать, только если я использую Azure Ключ доступа к хранилищу , а не MSI или Azure пользователь в моей Visual Studio (az login), которого я ожидал. Я дал пользователю масштаб и виртуальную машину. Установите роли Владелец, Участник, Хранитель больших двоичных объектов. Безуспешно.
Обязательно ли использовать SAS или ключ доступа для автоматического создания большого двоичного объекта?
Ошибка при использовании поставщика токенов (MSI, az login)
Microsoft.AspNetCore.DataProtection.Internal.DataProtectionHostedService:
Информация: не удалось загрузить кольцо ключей во время запуск приложения.
Запрос информации
StatusMessage: указанный ресурс не существует.
ErrorCode: ResourceNotFound
ErrorMessage: указанный ресурс не существует.
public void ConfigureServices( IServiceCollection services )
{
var accessKey = "ddBU/...==";
var blobUri = new Uri( $"https://mystorageaccount.blob.core.windows.net/mycontainer/keys.xml" );
var tp = new Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProvider();
var token = tp.GetAccessTokenAsync( $"https://mystorageaccount.blob.core.windows.net/" ).Result;
// OK - creates and updates blob when neccessary
var sc = new Microsoft.Azure.Storage.Auth.StorageCredentials( "mystorageaccount", accessKey );
// NOK - can only read the blob
//sc = new Microsoft.Azure.Storage.Auth.StorageCredentials( token );
var cbb = new Microsoft.Azure.Storage.Blob.CloudBlockBlob( blobUri, sc );
services.AddDataProtection()
.PersistKeysToAzureBlobStorage( cbb )
.SetApplicationName( "MyFrontends" );
}