【问题标题】:Azure access token for all files in sub directory子目录中所有文件的 Azure 访问令牌
【发布时间】:2019-04-22 03:59:09
【问题描述】:

我有一个安全的 Azure Blob 设置如下:

ContainerName > SubDirectory/FileName

E.g., /Photos/0000001/pic.png

其中一些子目录包含数千个文件,所有这些文件都需要呈现到网页上。由于 Blob 是安全的,因此我目前正在使用 GetSharedAccessSignature(...) 为每个单独的文件获取访问令牌。

有没有一种方法可以让我获得一个令牌来授予对子目录(“/0000001/”)中所有文件的访问权限,或者我目前正在做的事情被认为是最佳做法?

【问题讨论】:

    标签: asp.net azure azure-storage


    【解决方案1】:

    您只能为blob containersingle blob 获得Shared Access Signature,但您不能blob virtual directory 获得Shared Access Signature,因为目录不是Azure Blob 存储中的一个真实概念。

    【讨论】:

      【解决方案2】:

      不知道我是怎么错过的,但这里是获取目录访问令牌的方法:

      var blob = storageService.Context.Container.ListBlobs().FirstOrDefault();
      
      var policy =
          new SharedAccessBlobPolicy()
          {
              Permissions = SharedAccessBlobPermissions.Read,
              SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(10)
          };
      
      blob.Container.GetSharedAccessSignature(policy);
      

      【讨论】:

      • 这将允许访问整个 blob 容器,而不是子目录。
      【解决方案3】:

      如果激活分层命名空间(即数据湖),较新版本支持目录级别访问。见MS Docs: Service SAS support for directory scoped access

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-17
        • 2019-12-03
        • 2019-04-04
        • 2019-12-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多