Я создаю делегированный пользователем токен SAS с помощью этого кода:
var blobClient = new BlobServiceClient(blobUri, tokenCredential, null);
var userDelegationKey = await blobClient.GetUserDelegationKeyAsync(startDate, expiryDate);
Это работает нормально до тех пор, пока мне не понадобится BlobSasBuilder
создать строку запроса, которую можно использовать для доступа к большим двоичным объектам:
var startDate = DateTimeOffset.UtcNow;
var expiryDate = DateTimeOffset.UtcNow.AddDays(1);
var sasBuilder = new BlobSasBuilder
{
Resource = "c",
StartsOn = startDate,
ExpiresOn = expiryDate,
};
sasBuilder.SetPermissions(BlobSasPermissions.Read | BlobSasPermissions.List | BlobSasPermissions.Write | BlobSasPermissions.Create | BlobSasPermissions.Delete | lobSasPermissions.Add);
Проблема в том, что мне всегда нужно указывать Resource
либо как большой двоичный объект (b
), либо как контейнер (c
) (есть несколько других вариантов, не имеющих отношения к моему случаю). Я изменяю устаревшее приложение. Мне нужен токен SAS, который можно использовать для доступа к любому ресурсу под одной учетной записью хранения (мне нужен токен SAS, который не будет привязан к конкретному контейнеру или BLOB-объекту). Возможно ли сделать такое?
🤔 А знаете ли вы, что...
С C# можно разрабатывать веб-приложения с использованием ASP.NET и ASP.NET Core.
С помощью приведенного выше кода вы создаете Службу SAS, которая всегда будет требовать от вас указания типа ресурса как контейнера (c
) или большого двоичного объекта (b
).
Если вы хотите создать токен SAS для всей учетной записи хранения, вам необходимо создать учетную запись SAS.
Правильный класс для создания учетной записи SAS — AccountSasBuilder.
Однако, глядя на документацию , кажется, что невозможно использовать ключ делегирования пользователя для создания учетной записи SAS. Для этой цели вам нужно будет использовать ключ учетной записи.