Я пытаюсь создать токен 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
Получение ошибки при создании токена SAS для BLOB-объекта хранилища Azure с помощью MSI ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Создание токена SAS для хранилища BLOB-объектов Azure на PHP с помощью REST API
Anonymous » » в форуме Php - 0 Ответы
- 61 Просмотры
-
Последнее сообщение Anonymous
-