Azure Blob: серверу не удалось аутентифицировать запрос. Убедитесь, что значение заголовка авторизации сформировано правильно, включая подпись

#c# #azure #azure-blob-storage

#c# #azure #azure-blob-storage

Вопрос:

Кто-нибудь, пожалуйста, может мне помочь? Я получаю приведенную ниже ошибку при доступе к контейнеру blob-объектов с помощью токена SAS с эмулятором хранилища —

Серверу не удалось подтвердить подлинность запроса. Убедитесь, что значение заголовка Авторизации сформировано правильно, включая подпись

Система.Исключение AggregateException: произошла одна или несколько ошибок. (Серверу не удалось подтвердить подлинность запроса. Убедитесь, что значение заголовка авторизации сформировано правильно, включая подпись. Идентификатор запроса: c3d554bf-ae0c-413d-ba15-ef888f141864 Время: 2020-08-19T08:18:01.6796671Z Статус: 403 (Серверу не удалось аутентифицировать запрос. Убедитесь, что значение заголовка авторизации сформировано правильно, включая подпись.) Код ошибки: аутентификация не удалась

Заголовки: Сервер: Microsoft-HTTPAPI/2.0 x-ms-request-id: c3d554bf-ae0c-413d-ba15-ef888f141864 x-ms-error-code: аутентификация завершена Дата: Ср., 19 авг. 2020 г. 08:18:01 GMT Длина содержимого: 498 Тип содержимого: приложение / xml**

Ожидаемое поведение Каково ожидаемое поведение?

Ниже приведены сведения об исключении или трассировке стека — —> Azure.Исключение RequestFailedException: серверу не удалось аутентифицировать запрос. Убедитесь, что значение заголовка авторизации сформировано правильно, включая подпись. Идентификатор запроса: 0b506bfc-ba50-4519-924f-6072c5ba829d Время: 2020-08-19T08:47:57.3367759Z Статус: 403 (Серверу не удалось аутентифицировать запрос. Убедитесь, что значение заголовка авторизации сформировано правильно, включая подпись.) Код ошибки: аутентификация не выполнена

Заголовки: Сервер: Microsoft-HTTPAPI/2.0 x-ms-request-id: 0b506bfc-ba50-4519-924f-6072c5ba829d x-ms-error-code: аутентификация завершена Дата: Ср., 19 авг. 2020 г. 08:47:57 GMT Длина содержимого: 498 Тип содержимого: приложение / xml

в Azure.Хранение.Большие двоичные объекты.BlobRestClient.Обслуживание.GetPropertiesAsync_CreateResponse(диагностика клиента clientDiagnostics, Ответ Response) в Azure.Хранение.Большие двоичные объекты.BlobRestClient.Обслуживание.GetPropertiesAsync(ClientDiagnostics clientDiagnostics, конвейер HttpPipeline, Uri resourceUri, строковая версия, тайм-аут Nullable`1, строковый запрос ID, логическая асинхронность, строковое имя операции, CancellationToken CancellationToken) в Azure.Хранение.Большие двоичные объекты.BlobServiceClient.GetPropertiesInternal (логическая синхронизация, CancellationToken CancellationToken) в Azure.Хранение.Большие двоичные объекты.BlobServiceClient.GetPropertiesAsync(CancellationToken CancellationToken)

Я имею в виду примерный пример — https://github.com/Azure/azure-sdk-for-net/blob/master/sdk/storage/Azure .Хранение.Большие двоичные объекты / образцы/Sample02_Auth.cs

Ниже приведен код для воспроизведения —

 BlobSasBuilder sasBuilder = new BlobSasBuilder {
BlobContainerName = "myTestContainer",
Resource = "c",
//StartsOn = DateTimeOffset.UtcNow,
//ExpiresOn = DateTimeOffset.UtcNow.AddHours(1)
ExpiresOn = DateTimeOffset.MaxValue
};  
//Allow read access
        sasBuilder.SetPermissions(BlobContainerSasPermissions.Read);
        
        StorageSharedKeyCredential credential =
            new StorageSharedKeyCredential("Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==", "devstoreaccount1");

        // Use the key to get the SAS token.
        string sasToken = sasBuilder.ToSasQueryParameters(credential).ToString();

        Console.WriteLine("SAS for blob container is: {0}", sasToken);
        Console.WriteLine();

        // Build a SAS URI
        UriBuilder sasUri = new UriBuilder(containerClient.Uri);
        sasUri.Query = sasToken;

        // Create a client that can authenticate with the SAS URI
        BlobServiceClient service = new BlobServiceClient(sasUri.Uri);
        
         // Make a service request to verify we've successfully authenticated
        await service.GetPropertiesAsync(); //Note - Receiving above error while calling this function
  

Комментарии:

1. Пожалуйста, попробуйте добавить разрешение списка в соответствии с этим кодом: sasBuilder.SetPermissions(BlobContainerSasPermissions.Read | BlobContainerSasPermissions.List);

2. Пытался, но безуспешно .. все еще получаю ту же ошибку sasBuilder. SetPermissions(BlobContainerSasPermissions.List); sasBuilder. SetPermissions(BlobContainerSasPermissions. Все); sasBuilder. SetPermissions(BlobContainerSasPermissions.Read);