javascript - @azure/storage-blob 中的 TokenCredential 中的令牌是什么,如何获取?
问题描述
我正在使用 Blob 的存储帐户。我正在公开一个 SPA Web 应用程序,它充当存储帐户中 blob 的在线文件管理器。
我正在使用@azure/storage-blob
我希望能够规避使用 Azure 函数来生成 SAS 令牌,而 SharedKey 凭据仅适用于服务器端。这仅留下TokenCredential作为授权手段。
我尝试过的:我尝试在 App Registration 中注册我的 Web 应用程序,并允许它为 Storage Accounts 使用“user_impersonation”。然后我使用 MSAL 首先登录用户,然后静默获取访问令牌。
我的假设是这将作为 TokenCredential 的令牌,但它不适用于我。
有没有人自己试过这个?谢谢,拉斯穆斯
解决方案
通过查看@azure/storage-blob
SDK,对于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 令牌访问存储之前,您需要分配必要的存储角色以供使用。
推荐阅读
- excel - 将对象设置为“无”有什么好处
- google-cloud-platform - 将数据直接加载到 Google BigQuery 与先通过 Cloud Storage 有什么优缺点?
- python - KeyError:'标签[数据]不包含在轴中'
- c# - Unity:如何对物体的速度应用旋转?
- java - Jsoup:将属于body的文本包装在div中?
- mongodb - Mongo 聚合:包括存储在另一个集合中的值的描述
- python - 通过 pandas 列中的关键字提取值
- node.js - 使用 puppeteer 返回窗口对象
- sql - 如何创建包含 JSON 的列,该列的名称从另一个表中的列的值定义?
- python - python中折线图的数据标签