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

时间:2015-02-10 20:32:55

标签: c# azure oauth

我已经设置了一个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 Token:

{"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令牌。但是,当我尝试使用令牌卷曲Graph 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”别名返回错误,指出'users'资源不存在。我对这里的问题感到困惑

2 个答案:

答案 0 :(得分:11)

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

转到Windows Azure管理门户网站上的自定义广告 - >点击应用程序标签 - >单击AD应用程序的名称以转到其详细信息视图。在详细信息视图中,转到配置选项卡。

现在向下滚动到页面底部,以达到"对其他应用程序的权限"部分。在那里,您将看到当前分配给" Windows Azure Active Directory"应用程序在委派权限多选列表框中如下所示:

Application access rights for Azure AD

选中"访问您单位的目录"和"读取目录数据"。单击底部工具栏中的“保存”以保存更改。只要在页面上进行任何更改,就会自动显示“保存”按钮。上面的屏幕截图中看不到“保存”按钮,因为我在截取屏幕截图时已经保存了更改。

现在尝试使用图API再次访问您的AD用户详细信息。它不应该给予"没有足够的特权"错误了。希望这可以帮助!

答案 1 :(得分:2)

就我而言,我必须删除我在New Portal中创建的Azure AD App注册,并在Classic Portal中重新创建它们。执行此操作后,“权限不足”错误消失了,一切正常。

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

似乎微软仍然有一些问题可以解决新门户......