AAD Graph API权限问题

时间:2017-03-08 19:22:56

标签: c# azure azure-active-directory azure-ad-graph-api

我真的希望有人可以帮我解决一些我没有接受的许可问题。 我目前正在开发一个具有Azure Active Directory访问权限的Web应用程序。到目前为止一切正常。 我尝试实现从组到角色的转换,这对于一些测试来说效果很好。 但现在 - 我没有改变任何权限,我总是收到:

  

“:{”code“:”Authorization_RequestDenied“,”message“:{”lang“:”en“,”value“:”没有足够的权限来完成操作。“},”

有时这是 requestId date ,有时不是。

触发此权限问题的代码是:

var adClient = Instance.GetADClient(tenantID, signedInUserID, userObjectID);
var pagedCollection = await adClient.Users.GetByObjectId(userObjectID).MemberOf.ExecuteAsync();

如果我尝试使用

,也会发生同样的情况
  

GetMemberGroupsAsync()

因此无论何种类型,检索成员似乎都是一个许可问题。

任何人都知道我错过了什么或者我如何进一步调试它?

非常非常感谢任何想法!

汤姆

2 个答案:

答案 0 :(得分:1)

此错误表示您尚未请求或同意授予您的应用程序访问这些API的权限。

注册应用程序时,必须定义应用程序对其调用的API所需的权限。在这种情况下,如果您要调用AAD Graph API,则必须请求某些范围,您可以找到here

为您需要调用的API选择适当的范围后,您需要确保同意您的应用程序,这最终允许您的应用程序实际执行请求访问的内容。

请注意,某些范围明确要求租户的管理员同意。

如果您要调试与权限相关的问题,一个好的起点就是解码您的访问令牌,并查看scp声明,其中包含已授予您的应用程序的作用域。我通常使用this site来解码访问令牌。

如果您在令牌中看到了正在尝试进行的API调用的正确范围,那么您应该好好去!如果这有帮助,请告诉我。

答案 1 :(得分:1)

感谢Shawn Tabrizi,我找到了错误来源。 请注意,如果您遇到这些问题,请单击

  

授予权限

修改Azure AD应用程序权限后

。很可能像我这样的人只是监督。

这是Shawn提供的图片: **Grant Permissions** in Azure

再次感谢Shawn的帮助!