Azure 使用 REST api 和托管标识创建 blob 容器 - 403 错误

时间:2021-06-17 10:37:56

标签: node.js azure azure-storage azure-managed-identity azure-rest-api

我正在尝试使用 REST api 在存储帐户下创建 blob 容器

我正在使用托管标识(用于应用服务、节点应用程序)与存储帐户进行交互。此托管标识对资源组和存储帐户 - 存储帐户贡献者和存储 blob 数据贡献者具有必要的权限

以下是我正在执行的步骤:

我在第二步中发送的强制性标头是:

  • 授权:承载访问令牌
  • x-ms-date:2021-06-17T09:01:48.667Z
  • x-ms-版本:2020-04-08

我得到: statusCode: 403, statusMessage: '服务器验证请求失败。确保 Authorization 标头的值正确形成,包括签名。'

发送授权标头时我遗漏了什么吗?找不到任何使用托管标识调用创建容器 API 的示例。

另一种选择是使用 blob 存储 sdk (https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-nodejs),但找不到任何使用托管标识创建容器的示例。

非常感谢任何使这项工作的指针。

谢谢,

1 个答案:

答案 0 :(得分:0)

首先,您无法使用托管身份调用 Rest APIAuthorization 标头需要授权方案、帐户名称和签名。

enter image description here

在 Node.js 中使用 JavaScript v12 SDK 管理 blob:

您可以使用 @azure/identity 作为托管标识。

const { ManagedIdentityCredential } = require("@azure/identity");
const { BlobServiceClient } = require("@azure/storage-blob");

const credential = new ManagedIdentityCredential("<USER_ASSIGNED_MANAGED_IDENTITY_CLIENT_ID>");

const blobServiceClient = new BlobServiceClient(
    `https://${account}.blob.core.windows.net`,
    credential
);