我已经设置了一个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
Run Code Online (Sandbox Code Playgroud)
这会将用户带到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"}
Run Code Online (Sandbox Code Playgroud)
一切都恢复正常,我得到我的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."}}}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了{tenant},"me"别名和"myorganization"别名的实际域名,但它们都不起作用."me"别名返回错误,指出'users'资源不存在.我对这里的问题感到困惑
RBT*_*RBT 11
您的应用程序缺少权限,禁止azure AD读取自定义AD中存在的用户的详细信息.这是你需要做的:
在Windows Azure管理门户上转到自定义AD - >单击应用程序选项卡 - >单击AD应用程序的名称以转到其详细信息视图.在详细信息视图中,转到配置选项卡.
现在向下滚动到页面底部以达到"其他应用程序的权限"部分.在那里,您将看到当前在委派权限多选列表框中分配给"Windows Azure Active Directory"应用程序的所有权限,如下所示:

选中"访问您组织的目录"和"读取目录数据"复选框.单击底部工具栏中的"保存"以保存更改.只要在页面上进行任何更改,就会自动显示"保存"按钮.上面的屏幕截图中看不到"保存"按钮,因为我在截取屏幕截图时已经保存了更改.
现在尝试使用图API再次访问您的AD用户详细信息.它不应该再给出"Insufficient privileges"错误.希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
13200 次 |
| 最近记录: |