Visual Studio 获取blob的用户委派SAS

knpiaxh1  于 2023-03-09  发布在  其他
关注(0)|答案(1)|浏览(114)

我是c#新手,因为我正在开发一个Azure函数,该函数为blob存储生成SAS令牌,以及一些其他任务。
下面是我在微软找到的生成SAS令牌的代码。但是,我不知道如何正确使用它,因为我不知道应该通过参数传递的BlobClient对象是什么,应该从哪里调用它来执行任务(从Main方法还是哪里?),以及应该如何使用此函数的返回值。
我需要有人给予我更好地了解这对这个功能,以便能够正确使用它。
先谢了!

async static Task<Uri> GetUserDelegationSasBlob(BlobClient blobClient)
        {
            BlobServiceClient blobServiceClient =
                blobClient.GetParentBlobContainerClient().GetParentBlobServiceClient();

            // Get a user delegation 
            Azure.Storage.Blobs.Models.UserDelegationKey userDelegationKey =
                await blobServiceClient.GetUserDelegationKeyAsync(DateTimeOffset.UtcNow,
                                                                  DateTimeOffset.UtcNow.AddDays(7));

            // Create a SAS token that's also valid for 7 days.
            BlobSasBuilder sasBuilder = new BlobSasBuilder()
            {
                BlobContainerName = blobClient.BlobContainerName,
                BlobName = blobClient.Name,
                Resource = "b",
                StartsOn = DateTimeOffset.UtcNow,
                ExpiresOn = DateTimeOffset.UtcNow.AddDays(7)
            };

            // Specify read and write permissions for the SAS.
            sasBuilder.SetPermissions(BlobSasPermissions.Read | BlobSasPermissions.Write);

            // Add the SAS token to the blob URI.
            BlobUriBuilder blobUriBuilder = new BlobUriBuilder(blobClient.Uri)
            {
                // Specify the user delegation key.
                Sas = sasBuilder.ToSasQueryParameters(userDelegationKey,
                                                      blobServiceClient.AccountName)
            };

            Console.WriteLine("Blob user delegation SAS URI: {0}", blobUriBuilder);
            Console.WriteLine();
            return blobUriBuilder.ToUri();
        }
wrrgggsh

wrrgggsh1#

GetUserDelegationSasBlob方法为Azure Blob存储中的Blob生成用户委派SAS令牌。
该方法将BlobClient对象作为参数,它表示要为其生成SAS令牌的blob。
检查您是否安装了Azure.Storage.Blobs NuGet包并在代码顶部添加了using语句。
以下命名空间将在代码中使用以避免错误。

using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Specialized;
using Azure.Storage.Sas;

在Azure函数中,您需要调用如下代码

    • 我的类名称.方法名称();**
BlobClient bc;
Task<Uri> task = SomeClass.GetUserDelegationSasBlob(bc);

在不同的课堂上使用了相同的代码。

已调试代码,未出现错误。

该方法首先获取对BlobServiceClient对象的引用,该对象表示存储帐户的Blob存储终结点。它通过调用BlobServiceClient对象上的GetUserDelegationKeyAsync方法来请求用户委派密钥。用户委派密钥用于签署SAS令牌。
该方法创建一个BlobUriBuilder对象并将SAS令牌添加到blob URI。该方法返回带有SAS令牌的blob的URI。
您可以使用返回的URI通过SAS令牌访问blob。
使用PowerShell创建用户委派SAS。

az storage blob generate-sas \
    --account-name <storage-account> \
    --container-name <container> \
    --name <blob> \
    --permissions acdrw \
    --expiry <date-time> \
    --auth-mode login \
    --as-user \
    --full-uri

有关User-delegation-sas.的详细信息

相关问题