尝试访问 Azure Graph API 时出现权限不足错误

Insufficient privileges error when trying to access Azure Graph APIs

我已经设置了一个 Azure AD 应用程序,我想将其与我的 Web 应用程序一起使用。我通过以下步骤获得了一个 oAuth 令牌:

首先我请求了我的授权码:

https://login.windows.net/common/oauth2/authorize?redirect_uri={REDIRECT_URI}&client_id={CLIENT_ID}&response_type=code&state=o365&prompt=admin_consent

这会将用户带到 login.windows.net 页面,他们必须在该页面上接受我的应用程序将在他们的 AD 上使用的权限。

之后,我使用此端点 https://login.windows.net/common/oauth2/token 和使用 C# 的有效载荷获得 oAuth 令牌:

{"code": {AUTH_CODE}},
{"state", {STATE}},
{"grant_type", "authorization_code"},
{"redirect_uri", "{REDIRECT_URI}"},
{"client_id", "1ff78c4b-414f-44c7-834b-09bdae96f440"},
{"client_secret", "{CLIENT_SECRET}"},
{"resource", "https://graph.windows.net"}

一切恢复正常,我得到了我的 oAuth 令牌。但是,当我尝试使用令牌卷曲图形 API 时,出现此错误

curl https://graph.windows.net/{tenant}/users?api-version=1.5 -H "Authorization: Bearer [AUTH_TOKEN]"

{"odata.error":{"code":"Authorization_RequestDenied","message":{"lang":"en","value":"Insufficient privileges to complete the operation."}}}

我已经尝试了 {tenant} 的实际域、"me" 别名和 "myorganization" 别名,但它们都不起作用。 "me" 别名 returns 一个错误,指出 'users' 资源不存在。我对这里的问题感到困惑

您的应用程序缺少权限,禁止 azure AD 读取您的自定义 AD 中存在的用户的详细信息。这是您需要做的:

在 windows Azure 管理门户上转到您的自定义 AD -> 单击应用程序选项卡 -> 单击您的 AD 应用程序的名称以转到其详细信息视图。在详细信息视图中转到配置选项卡。

现在向下滚动到页面底部以到达 "permissions to other applications" 部分。在那里,您将在委托权限多 select 列表框中看到当前分配给 "Windows Azure Active Directory" 应用程序的所有权限,如下所示:

选中 "Access your organization's directory" 和 "Read directory data" 复选框。单击底部工具栏中的保存以保存更改。一旦您在页面上进行任何更改,保存按钮就会自动出现。保存按钮在上面的截图中不可见,因为我在截图时已经保存了更改。

现在再次尝试使用图表 API 访问您的 AD 用户详细信息。它不应该再给出 "Insufficient privileges" 错误。希望这可以帮助!

就我而言,我必须删除在新门户中创建的 Azure AD 应用程序注册,然后在经典门户中重新创建它们。这样做之后,"insufficient privileges" 错误消失了,一切正常。

作为先决条件,请确保您也已从经典门户添加为订阅的共同管理员,否则 Azure 甚至不会让您进入经典门户门户了。

似乎微软在新门户方面仍有一些问题需要解决...