我已经设置了一个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'资源不存在。我对这里的问题感到困惑
答案 0 :(得分:11)
您的应用程序缺少权限,禁止azure AD读取自定义AD中存在的用户的详细信息。以下是您需要做的事情:
转到Windows Azure管理门户网站上的自定义广告 - >点击应用程序标签 - >单击AD应用程序的名称以转到其详细信息视图。在详细信息视图中,转到配置选项卡。
现在向下滚动到页面底部,以达到"对其他应用程序的权限"部分。在那里,您将看到当前分配给" Windows Azure Active Directory"应用程序在委派权限多选列表框中如下所示:
选中"访问您单位的目录"和"读取目录数据"。单击底部工具栏中的“保存”以保存更改。只要在页面上进行任何更改,就会自动显示“保存”按钮。上面的屏幕截图中看不到“保存”按钮,因为我在截取屏幕截图时已经保存了更改。
现在尝试使用图API再次访问您的AD用户详细信息。它不应该给予"没有足够的特权"错误了。希望这可以帮助!
答案 1 :(得分:2)
就我而言,我必须删除我在New Portal中创建的Azure AD App注册,并在Classic Portal中重新创建它们。执行此操作后,“权限不足”错误消失了,一切正常。
作为先决条件,请确保您作为共同管理员添加到您的订阅来自经典门户,否则Azure甚至不会让您进入经典门户网站。
似乎微软仍然有一些问题可以解决新门户......