javascript - azure-graph Users.get(principalID) 抛出 Request_ResourceNotFound

标签 javascript node.js azure azure-active-directory azure-ad-graph-api

我正在尝试通过 Node.js 获取资源组的 IAM 列表。返回的列表包含用户 ID 而不是用户名,因此我尝试通过用户 ID 获取用户名。

const authorizationManagement = require('azure-arm-authorization');
const GraphkManagementClient = require('azure-graph');
const authorizationClient = new authorizationManagement(credentials, subscriptionId);
const graphClient = new GraphkManagementClient(credentials, tenantId);

let iamList = client.roleAssignments.listForResourceGroup(workspaceName);

for (let i in iamList) {
    const user = graphClient.users.get(iamList[i].principalId);
    iamList[i].principalId = user;
}

return iamList;

但是这条线:

const user = graphClient.users.get(iamList[i].principalId);

抛出:

Request_ResourceNotFound: message:"Resource 'b175c95c-e50f-5c46-0b0d-d9f7106d0873' does not exist or one of its queried reference-property objects are not present."

最佳答案

Angular 色分配本身由以下因素构成:

  • 安全主体 ID(用户、组、服务主体等,无论您要为其分配 Angular 色)
  • Angular 色定义 ID(您分配的 Angular 色的标识符,例如贡献者、所有者或与此相关的自定义 RBAC Angular 色)
  • 范围(分配此 Angular 色的范围,例如订阅级别或特定资源组)

这个概念在 Microsoft Docs 上有详细且很好的解释。

当获取像此处所讨论的 Angular 色分配列表时,响应对象包含 principalId 但不包含 principalType 来指示它是用户、组、服务主体还是微星。 因此,查询此主体的一种安全方法是不假设任何特定类型,而只是查找具有该 Id 的对象。

同一包 azure-graph 中提供的

getObjectsByObjectIds 方法 ( documentation ) 可以帮助解决这个问题。在幕后使用的 Azure AD Graph API 可能是 getObjectsByObjectIds

作为一个旁 Node ,值得一提的是,这个问题与another SO thread密切相关。 ,因此只需在此处引用它即可为将来阅读本文的任何人提供上下文帮助。

关于javascript - azure-graph Users.get(principalID) 抛出 Request_ResourceNotFound,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54091305/

相关文章:

javascript - Ember.js - 在嵌套路由更改时呈现不同的布局

javascript - 使用 jQuery 动态替换 <tr> 及其包含的元素

javascript - eval 返回未定义,浏览器返回结果

javascript - 同步 Node.js API 和 AWS Lambda

javascript - Node 未处理的 Promise 问题

Azure 媒体分析与认知服务视频 API

azure - New-AzADAppCredential 生成客户端 key

node.js redis smembers 同步

node.js - 更新 CloudFunctions 上的子集合

azure - Microsoft Azure 机器学习的原名是什么?