Получение ошибки при создании токена SAS для BLOB-объекта хранилища Azure с помощью MSIC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Получение ошибки при создании токена SAS для BLOB-объекта хранилища Azure с помощью MSI

Сообщение Anonymous »

Я пытаюсь создать токен SAS для большого двоичного объекта хранилища. Я использую StorageCredentials, созданный с помощью MSI (Managed Service Identity), для создания CloudBlobClient. При создании SAS я получаю сообщение «Невозможно создать подпись общего доступа, если не используются учетные данные ключа учетной записи». Есть ли поддержка SAS с MSI?
var container = blobClient.GetContainerReference(containerName);
var blockBlob = container.GetBlockBlobReference(snapname);
var sas = string.Concat(blockBlob.Uri.ToString(), blockBlob.GetSharedAccessSignature(sasConstraints));

Вот как я создаю StorageCredentials:
tokenCallback = CreateMsiCallback();
var initToken = await tokenCallback(audience);
return new StorageCredentials(
new TokenCredential(initToken, async (state, token) =>
{
var accessToken = await _tokenCallback(audience);

return new NewTokenAndFrequency(accessToken, TimeSpan.FromMinutes(1));
}, null, TimeSpan.FromMinutes(1))
);

Для создания обратного вызова токена я использую HttpClient
public Func CreateMsiCallback()
{
var handler = new HttpClientHandler
{
ServerCertificateCustomValidationCallback =
(httpRequestMessage, cert, certChain, policyErrors) =>
{
if (policyErrors == SslPolicyErrors.None)
{
return true;
}

return 0 == string.Compare(cert.GetCertHashString(), FabricThumbprint, StringComparison.OrdinalIgnoreCase);
}
};

var client = new HttpClient(handler)
{
DefaultRequestHeaders =
{
{"secret", FabricAuthenticationCode }
}
};

return async (resource) =>
{
var requestUri = $"{FabricMsiEndpoint}?api-version={FabricApiVersion}&resource={HttpUtility.UrlEncode(resource)}";
var requestMessage = new HttpRequestMessage(HttpMethod.Get, requestUri);
var response = await client.SendAsync(requestMessage);
response.EnsureSuccessStatusCode();
var tokenResponseString = await response.Content.ReadAsStringAsync();
var tokenResponseObject =
JsonConvert.DeserializeObject(tokenResponseString);

return tokenResponseObject.AccessToken;
};
}
}


Подробнее здесь: https://stackoverflow.com/questions/673 ... b-with-msi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Создание токена SAS для хранилища BLOB-объектов Azure на PHP с помощью REST API
    Anonymous » » в форуме Php
    0 Ответы
    61 Просмотры
    Последнее сообщение Anonymous
  • Пути файлов хранилища Blob Blob -Blob
    Anonymous » » в форуме IOS
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Пути файлов хранилища Blob Blob -Blob
    Anonymous » » в форуме IOS
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Попытка загрузить изображение большого двоичного объекта в систему Azure с помощью токена SAS и получить ошибку аутентиф
    Гость » » в форуме Php
    0 Ответы
    34 Просмотры
    Последнее сообщение Гость
  • Попытка загрузить изображение большого двоичного объекта в систему Azure с помощью токена SAS и получить ошибку аутентиф
    Гость » » в форуме Php
    0 Ответы
    33 Просмотры
    Последнее сообщение Гость

Вернуться в «C#»