Я пытаюсь создать версию SAS для большого двоичного объекта, чтобы разрешить доступ для чтения к одной конкретной версии большого двоичного объекта. У меня было поколение SAS, работающее для корневого большого двоичного объекта, и я попытался изменить его для функции управления версиями большого двоичного объекта, добавив BlobVersionId, однако сервер возвращает 403.
Измененный SAS Builder для конкретной версии большого двоичного объекта: (не работает)
public string GetBlobSasTokenAsync(string containerName, string blobName, string blobVersionId, string fileName)
{
var sasBuilder = new BlobSasBuilder()
{
BlobContainerName = containerName,
BlobName = blobName,
BlobVersionId = blobVersionId,
StartsOn = DateTime.UtcNow.Subtract(_clockSlew),
ExpiresOn = DateTime.UtcNow.AddMinutes(AccessDuration) + _clockSlew,
ContentDisposition = "inline; filename=" + fileName,
ContentType = GetContentType(fileName)
};
sasBuilder.SetPermissions("r");
var storageSharedKeyCredential = new StorageSharedKeyCredential(_accountName, _accountKey);
var sasQueryParameters = sasBuilder.ToSasQueryParameters(storageSharedKeyCredential);
return sasQueryParameters.ToString();
}
Ошибка:
<?xml version="1.0" encoding="utf-8"?>
<Error>
<Code>AuthenticationFailed</Code>
<Message>Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
RequestId:63b83bb8-201e-00a8-55a1-544fe3000000
Time:2020-07-07T21:01:08.2149986Z</Message>
<AuthenticationErrorDetail>The specified signed resource is not allowed for the this resource level</AuthenticationErrorDetail>
</Error>
Использование: Azure.Storage.Blobs 12.5.0-preview.5