node.js - 由于授权权限不匹配,无法访问存储队列接收消息

标签 node.js azure azure-storage-queues azure-identity

我已使用 ClientSecretCredential 访问 Azure 存储队列方法,但在访问时 队列 receiveMessages、队列 peekMessages 和 deleteMessages 它给了我错误

RestError: This request is not authorized to perform this operation using this permission. RequestId:c92577923e-a603-0004-61c0-f70a19000

这是我的 Node.js 代码

const { QueueServiceClient } = require("@azure/storage-queue");
const { ClientSecretCredential } = require("@azure/identity");
async function getQueueMessages() {
  try {
    let myStorageAccount = "hellostorage";
    const credential = new ClientSecretCredential(tenantId, app_id, SecretKey);
    const queueServiceClient = new QueueServiceClient(
      `https://${myStorageAccount}.queue.core.windows.net`,
      credential
    );
    const queueName = "hello-queue";
    const queueClient = queueServiceClient.getQueueClient(queueName);
    const response = await queueClient.receiveMessages(10);
    console.log("response: ", response);
  } catch (error) {
    console.log("error: ", error);
  }
}
getQueueMessages();

这是我的应用程序权限 enter image description here

最佳答案

您共享的屏幕截图本质上允许您的服务主体为您的存储帐户获取 token 。它不授予您对存储帐户执行操作的权限,这就是您收到此错误的原因。

您需要做的是向存储帐户上的服务主体授予适当的数据相关权限。请参阅此链接,了解必须分配给服务主体才能执行数据相关操作的相应 RBAC 角色:https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-azure-active-directory#manage-access-rights-with-rbac .

您可以尝试使用 Storage Queue Data Message ProcessorStorage Queue Data Contributor角色。

应用适当的角色后,您应该能够执行操作。

关于node.js - 由于授权权限不匹配,无法访问存储队列接收消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70458234/

相关文章:

c# - Visual Studio 2022 中的 Microsoft Identity Platform 依赖项配置

Azure 存储队列 - 是否有用于设置有害消息 TTL 的应用程序范围配置

c# - 我可以使用 Azure 存储队列中的 Response<SendReceipt> 验证消息是否已成功发送

node.js - 如何获取 Nodejs 中显示的 console.log 行号?

javascript - 比较对象数组和奇异值数组

node.js - 如何在 Node 脚本中重用 Angular 6 API 服务?

c# - Azure Blob 存储 403 身份验证失败

azure - 如何使用 Azure DevOps Pipeline 将 Docker Hub 与 Azure 容器应用程序集成

Azure Function 和存储队列,如果函数失败怎么办

node.js - yargs .check()错误处理