【发布时间】:2021-11-08 19:34:49
【问题描述】:
我使用 azure-sdk-for-js (NodeJS)。 特别是 - @azure/storage-blob@12.6.0。
我有一个生成 SAS 令牌的服务,它们会在几分钟后过期。我想在上次过期后以某种方式请求新令牌。即使在操作过程中也应该这样做。因为当我将大文件上传到 blob 时,中间 SAS 令牌过期并且上传失败。
我有一个我需要的工作示例,但使用 EventHub。 我创建事件中心客户端:
new EventHubProducerClient(eventHubHost, eventHubName, sasGenerator)
而sasGenerator 是TokenCredential 的实现。它返回生成的AccessToken(具有 SAS 令牌和 expiresOnTimestamp)。如果我理解正确,EventHubProducerClient 在需要时使用我的sasGenerator 刷新令牌。
我发现BlobServiceClient 有类似的参数credential 可以有TokenCredential 的类型。但是与 EventHub 相同的方法不起作用:
new BlobServiceClient(blobHost, sasGenerator)
错误示例:
RestError: Server failed to authenticate the request. Please refer to the information in the www-authenticate header
我还能够将生成的 SAS 令牌与AnonymousCredential 一起使用,并且可以正常工作。但我无法将大文件上传到 blob,因为令牌提前过期。
【问题讨论】:
标签: node.js azure azure-blob-storage