首页 > 解决方案 > @azure/storage-blob 中的 TokenCredential 中的令牌是什么,如何获取?

问题描述

我正在使用 Blob 的存储帐户。我正在公开一个 SPA Web 应用程序,它充当存储帐户中 blob 的在线文件管理器。

我正在使用@azure/storage-blob

我希望能够规避使用 Azure 函数来生成 SAS 令牌,而 SharedKey 凭据仅适用于服务器端。这仅留下TokenCredential作为授权手段。

我尝试过的:我尝试在 App Registration 中注册我的 Web 应用程序,并允许它为 Storage Accounts 使用“user_impersonation”。然后我使用 MSAL 首先登录用户,然后静默获取访问令牌。

我的假设是这将作为 TokenCredential 的令牌,但它不适用于我。

有没有人自己试过这个?谢谢,拉斯穆斯

标签: javascriptazurebrowserazure-blob-storage

解决方案


通过查看@azure/storage-blobSDK,对于BlobServiceClient,有一个构造函数

  constructor(
    url: string,
    credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential,
    options?: StoragePipelineOptions
  );

InteractiveBrowserCredential在开发 SPA 时,您可以使用@azure/identity

  var interactiveBrowserCredential = new InteractiveBrowserCredential("tenant_id, e4c9ab4e-****-****-****-230ba2a757fb", "client_id,ebb50468-****-****-****-85e7968135c0");
  const blobServiceClient = new BlobServiceClient(
    `https://${account}.blob.core.windows.net`,
    interactiveBrowserCredential
  );

顺便说一句,在他使用 AAD 令牌访问存储之前,您需要分配必要的存储角色以供使用。

在此处输入图像描述


推荐阅读