我正在设置一个脚本,可以为我们组织中的不同用户生成SAS密钥,以访问不同的文件。我使用Azure SDK获取blob并基于找到的blob客户端生成密钥。在设置了BlobSasBuilder并生成了Uri并转到它之后,我得到了一个签名格式不好的认证错误。我已经验证了blob是有效的,可以通过门户网站使用授权帐户访问,但我不知道我还能做什么。
下面是我目前的SAS测试代码:
static void Main(string[] args)
{
StorageSharedKeyCredential keyCredential = new StorageSharedKeyCredential(accountName, accountKey);
BlobServiceClient serviceClient = new BlobServiceClient(new Uri($"https://{accountName}.file.core.usgovcloudapi.net"), keyCredential);
BlobClient blobClient = serviceClient.GetBlobContainerClient("account-data").GetBlobClient("ADImport.csv");
Uri sasURL = CreateServiceASBlob(blobClient);
Console.WriteLine(sasURL);
Console.ReadLine();
}
public static Uri CreateServiceASBlob(BlobClient blobClient)
{
if (blobClient.CanGenerateSasUri)
{
BlobSasBuilder sasBuilder = new BlobSasBuilder()
{
BlobContainerName = blobClient.GetParentBlobContainerClient().Name,
BlobName = blobClient.Name,
Resource = "b",
StartsOn = DateTimeOffset.UtcNow.AddHours(-1),
ExpiresOn = DateTimeOffset.UtcNow.AddDays(1)
};
sasBuilder.SetPermissions(BlobAccountSasPermissions.Read);
return blobClient.GenerateSasUri(sasBuilder);
}
return null;
}
到目前为止,我已经尝试生成查询参数并附加到URL,但没有成功。我期待下载事件发生上传访问链接,但一直没有成功这样做。沿着我的谷歌搜索提供的代码没有取得任何成功,我将感谢任何额外的帮助。
1条答案
按热度按时间7tofc5zh1#
我猜你的目标文件是Azure文件的文件,因为你的存储帐户是
*.file.core.usgovcloudapi.net
。如果你想为Azure文件(而不是blob)生成SAS,请使用
Azure.Storage.Files.Shares
。示例代码