从托管在应用程序服务上的静态网站读取Azure Blob存储

时间:2020-07-28 12:48:30

标签: .net azure-blob-storage class-library static-content

我有一个由App Sevice托管的类库项目.Net框架。并且该项目有一些指向存储在Blob存储中的媒体的链接。我需要一种方法来授权我的站点使用连接字符串或其他内容访问blob存储上的媒体。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

根据您的要求,我认为您可以使用shared access signatures

共享访问签名(SAS)提供对存储帐户中资源的安全委派访问,而不会损害数据的安全性。使用SAS,您可以精确控制客户端如何访问数据。您可以控制客户端可以访问哪些资源,它们对这些资源具有哪些权限以及SAS有效的时间以及其他参数。

您可以在Azure Portal中创建它:

enter image description here

有关更多详细信息,请参阅此官方document

您还可以使用.NET为容器或Blob创建user delegation SAS,代码示例如下:

// Create a SAS token that's valid for one hour.
BlobSasBuilder sasBuilder = new BlobSasBuilder()
{
    BlobContainerName = containerName,
    BlobName = blobName,
    Resource = "b",
    StartsOn = DateTimeOffset.UtcNow,
    ExpiresOn = DateTimeOffset.UtcNow.AddHours(1)
};

// Specify read permissions for the SAS.
sasBuilder.SetPermissions(BlobSasPermissions.Read);

// Use the key to get the SAS token.
string sasToken = sasBuilder.ToSasQueryParameters(key, accountName).ToString();

// Construct the full URI, including the SAS token.
UriBuilder fullUri = new UriBuilder()
{
    Scheme = "https",
    Host = string.Format("{0}.blob.core.windows.net", accountName),
    Path = string.Format("{0}/{1}", containerName, blobName),
    Query = sasToken
};

有关如何访问和操作文件的信息,请参阅此官方document