我的代码(Node.js):
const GraphkManagementClient = require('azure-graph');
client = new GraphkManagementClient(credentials, tenantId);
client.users.get(principalID);
最后一行抛出:
Authorization_RequestDenied:权限不足,无法完成 操作。
我知道如何在Azure门户上授予特权,但是我不知道哪一个是执行此操作的azure-graph的正确特权。列表太长了:
(这只是列表的开头)
答案 0 :(得分:1)
首先,您要根据问题中的屏幕截图为错误的API分配权限。它会显示“ Microsoft Graph”,尽管您的代码将使用Azure AD Graph API。
在Azure门户中,导航到Azure Active Directory>应用程序注册>您的应用程序>所需权限>添加(现在在“选择API”中选择“ Windows Azure Active Directory”)
现在,如果代码中使用的凭据是客户端ID /应用ID和应用密钥,那么您需要在“应用权限”下分配“读取目录数据”。对于像msRestAzure.loginWithServicePrincipalSecret
否则,如果您提示用户输入其凭据并进行诸如交互式登录之类的操作,则在“委派权限”下分配“读取目录数据”。对于像msRestAzure.interactiveLogin()
分配了相关权限后,如果其中任何一个需要管理员同意,就像我在上面显示的两种情况中一样,请先获得管理员同意。您可以在过程结束时使用“授予权限”按钮方便地为同一租户执行此操作。
答案 1 :(得分:0)
在Azure Active Directory中的“应用程序注册”的Microsoft Graph权限下,授予“读取目录数据”权限。这应该足以使该呼叫起作用。如果该值过高,请参考此以获取更多信息: