#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);