gpt4 book ai didi

javascript - Active Directory 从浏览器访问 Azure 存储

转载 作者:行者123 更新时间:2023-12-03 02:19:04 27 4
gpt4 key购买 nike

我想使用 Azure Active Directory 允许用户从单页 Web 应用程序读取和写入 Azure 存储(特别是所有 Blob 和表)。

我是这样开始的:

import { InteractiveBrowserCredential } from '@azure/identity';
import { TableClient, TableServiceClient } from '@azure/data-tables';

const credentials = new InteractiveBrowserCredential({
clientId: myAuthConfig.clientId,
tenantId: myAuthConfig.tenantId,
});

const client = new TableServiceClient(
`https://${myAuthConfig.storageAccountName}.table.core.windows.net`,
credentials
);
client.listTables().byPage().next().then(console.log);

这完全没问题!我可以看到帐户上的所有 table 。但后来我想列出表格中的一些数据。所以我这样做了:

const client = new TableClient(
`https://${myAuthConfig.storageAccountName}.table.core.windows.net`,
'<table name>',
credentials
);
client.listEntities().byPage().next().then(console.log);

但这会产生错误:

{
"odata.error": {
"code":"AuthorizationPermissionMismatch",
"message": {
"lang":"en-US",
"value":"This request is not authorized to perform this operation using this permission.\nRequestId:<uuid>\nTime:2021-10-28T18:04:00.0737419Z"
}
}
}

我对这个错误感到非常困惑。据我所知,我做的一切都是正确的。我遵循了每个教程。我已为我的应用设置了 Active Directory 权限以使用存储 API,我的 Microsoft 帐户有权访问表,启用了 OCRS 等。

enter image description here

我不确定为什么我可以查看表格但看不到其中的内容。我尝试使用 InteractiveBrowserCredential.authenticate 显式设置范围,如下所示:

const scopes = ["User.Read"]

credentials.authenticate(scopes).then(console.log);

它对于User.Read工作正常,但我无法弄清楚哪些范围对应于存储读/写访问。如果我添加像 "Microsoft.Storage" 这样的副本,它会告诉我它不存在

以前有人遇到过这样的错误吗?我应该在这里做什么?

最佳答案

谢谢@gaurav mantri,在评论中发布您的建议作为答案。

从错误看来,您的服务主体没有对表存储数据的访问权限。您应该使用存储帐户资源上的 RBAC Angular 色授予权限(添加到存储帐户贡献者或读者),如下所示。或者使用存储资源管理器授予权限。

在您的存储帐户中,请检查您是否分配了 @gaurav mantri 评论的存储表数据贡献者/存储表数据读取者 Angular 色

enter image description here

如果没有,您可以添加它们进入您的存储帐户 > IAM > 添加 Angular 色分配,然后添加特殊权限

enter image description here

如果 Angular 色已分配,则问题可能是由于存储帐户受防火墙保护所致。请尝试在存储帐户的防火墙和虚拟网络中进行配置,以添加现有虚拟网络或创建新的虚拟网络。如果没有问题,您可以允许从所有网络进行访问。

引用文献:

  1. Authorize access to tables using Active Directory - Azure Storage |Microsoft Docs
  2. Assign an Azure role for access to table data using powershell -Azure Storage | Microsoft Docs

关于javascript - Active Directory 从浏览器访问 Azure 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69759082/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com