【问题标题】:How to generate SAS token for Azure blob container in Angular?如何在 Angular 中为 Azure blob 容器生成 SAS 令牌?
【发布时间】:2020-08-07 17:31:53
【问题描述】:

我正在使用 .net 核心应用程序为我的 Azure blob 容器生成具有私有访问级别的 SAS(共享访问签名)令牌,它运行良好。

代码:

private static string GetContainerSasUri(CloudBlobContainer container, string storedPolicyName = null)
{
  string sasContainerToken;

  if (storedPolicyName == null)
  {          
     SharedAccessBlobPolicy adHocPolicy = new SharedAccessBlobPolicy()
     {
         SharedAccessStartTime = DateTime.UtcNow.AddMinutes(-1),
         SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(2),
         Permissions = SharedAccessBlobPermissions.Read
     };

     sasContainerToken = container.GetSharedAccessSignature(adHocPolicy, null);
   }
   else
      sasContainerToken = container.GetSharedAccessSignature(null, storedPolicyName);


    return container.Uri + sasContainerToken;
}

现在我想使用 Angular 做同样的事情(生成 SAS 令牌)。我用谷歌搜索并找到了一些链接,但没有一个详细解释这一点。有没有办法做到这一点?

【问题讨论】:

    标签: angularjs angular asp.net-core azure-blob-storage


    【解决方案1】:

    现在我想使用 Angular 做同样的事情(生成 SAS 令牌)。我有 用谷歌搜索并找到了一些链接,但没有一个可以解释这一点 细节。有没有办法做到这一点?

    简单的答案是否定的,您无法从 Angular 等客户端库创建 SAS 令牌。好吧,从技术上讲你可以,但创建 SAS 令牌需要存储帐户密钥,从客户端创建它意味着你会将存储帐户密钥暴露给使用你的应用程序的每个人。

    更好的选择是对您的后端服务进行 API 调用,并让该服务为您创建一个 SAS 令牌。这样您就可以保护您的帐户密钥安全。

    【讨论】:

    • 我完全同意你的看法。但是我仍然很好奇是否有办法甚至必须公开我的存储密钥?
    • 是的,当然可以这样做(记住风险)。只需检查适用于 Azure 存储的 JavaScript SDK,您就会确切地知道它是如何完成的。
    • 正如我所提到的,我已经搜索过它,但在任何地方都找不到任何好的帮助,所以如果你能向我推荐任何很好的链接来解释它吗?
    • 请看这个:github.com/Azure/azure-sdk-for-js/blob/master/sdk/storage/…。如果它变得混乱,请参阅 REST API 文档:docs.microsoft.com/en-us/rest/api/storageservices/… :)。 HTH。
    猜你喜欢
    • 2018-12-12
    • 1970-01-01
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 2019-04-28
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多