[英]How can i determine if a SAS Token has already expired for Azure Blob Storage Container Access?
[英]Why can't my app access by blob storage using this SAS token?
我正在尝试访问一个 blob 存储帐户并使用 SAS 令牌简单地列出容器的内容。 我正在生成一个访问策略(根据此文档)并在我的访问令牌中引用该访问策略。
不幸的是,当我的代码尝试运行ListBlobsSegmented
函数时,我收到了 403(禁止访问)错误。
这是试图获取 blob 列表的代码:
string storageAccountName = "ringclone";
string containerName = "ringcentral-archives";
string authenticationKey = "?sv=2018-03-28&si=ringclone-access-policy&sr=c&sig=************************";
StorageCredentials creds;
CloudStorageAccount account;
CloudBlobClient blobClient;
CloudBlobContainer cloudBlobContainer;
creds = new StorageCredentials(authenticationKey);
account = new CloudStorageAccount(creds, storageAccountName, endpointSuffix: null, useHttps: true);
blobClient = account.CreateCloudBlobClient();
cloudBlobContainer = blobClient.GetContainerReference(containerName);
BlobContinuationToken blobContinuationToken = null;
var containerSegment = blobClient.ListBlobsSegmented("", blobContinuationToken); // 403 error;
这些是我用来生成访问策略并生成引用该访问策略的 SAS 令牌的步骤:
根据文档,查询字符串字段用作身份验证密钥
string storageAccountName = "ringclone";
string containerName = "ringcentral-archives";
string authenticationKey = "?sv=2018-03-28&si=ringclone-access-policy&sr=c&sig=************************"; // retrieved from the "Query String" field in storage explorer.
但是,我在尝试列出容器中的 blob 时收到 403 错误。 我究竟做错了什么?
在控制台应用程序中尝试以下代码:
using Microsoft.Azure.Storage.Auth;
using Microsoft.Azure.Storage.Blob;
using System;
namespace AzureStorageTest
{
class Program
{
static void Main(string[] args)
{
string storageAccountName = "<storage account name>";
string containerName = "<container name>";
string sasToken = "<sas token>";
StorageCredentials creds;
CloudBlobContainer cloudBlobContainer;
creds = new StorageCredentials(sasToken);
cloudBlobContainer = new CloudBlobContainer(new Uri("https://"+ storageAccountName + ".blob.core.windows.net/"+ containerName), creds);
BlobContinuationToken blobContinuationToken = null;
var blobs = cloudBlobContainer.ListBlobsSegmented("", blobContinuationToken);
foreach (var blob in blobs.Results) {
Console.WriteLine(blob.Uri);
}
Console.ReadKey();
}
}
}
结果:
希望能帮助到你
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.