尝试访问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”应用程序的所有权限,如下所示:
选中“访问您组织的目录”和“读取目录数据”复选框。 单击底部工具栏中的“保存”以保存更改。 只要在页面上进行任何更改,就会自动显示“保存”按钮。 上面的屏幕截图中看不到“保存”按钮,因为我在截取屏幕截图时已经保存了更改。
现在尝试使用图API再次访问您的AD用户详细信息。 它不应该再给出“Insufficient privileges”错误。 希望这可以帮助!
就我而言,我必须删除我在新门户中创建的Azure AD应用程序注册,并在经典门户中重新创建它们。 执行此操作后,“权限不足”错误消失了,一切正常。
作为先决条件,请确保您从经典门户网站添加为订阅的共同管理员,否则Azure将不再允许您进入经典门户网站。
似乎微软仍然有一些问题要敲定新门户…
- 持续部署和交付
- Azure WebJobs – 托管在哪里? 它们作为长期运行的过程是否安全?
- Windows Azure – 在Windows Azure IIS存储中提供未知(mp4)MIME类型
- Azure存储相关的API是否参与System.Transactions?
- 从sql报告服务器下载XML文件
- 如何加载自定义字体以在Windows Azure上绘制图像?
- 在windows azure中使用Redis实现进程外缓存
- Azure配置设置和Microsoft.WindowsAzure.CloudConfigurationManager
- 通过运行asp.net mvc Web应用程序的IIS访问映射驱动器