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

我已经设置了一个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令牌。 但是,当我尝试使用令牌curlGraph 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’资源不存在。 我对这里的问题感到困惑

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

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

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

Azure AD的应用程序访问权限

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

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

就我而言,我必须删除我在新门户中创建的Azure AD应用程序注册,并在经典门户中重新创建它们。 执行此操作后,“权限不足”错误消失了,一切正常。

作为先决条件,请确保您从经典门户网站添加为订阅的共同管理员,否则Azure将不再允许您进入经典门户网站。

似乎微软仍然有一些问题要敲定新门户…