Authorization_RequestDenied 尝试使用 Graph 从 Azure Active Directory 获取组时 API

Authorization_RequestDenied when trying to get groups from Azure Active Directory using Graph API

我正在尝试使用图表 API 获取有关 Azure Active Directory 组的信息,但我一直收到 "Authorization_RequestDenied" 响应。

这个问题与 Insufficient privileges error when trying to fetch signed in user's group membership using Azure AD Graph API 类似,但那个问题的答案对我不起作用。

这是我所做的:

身份验证部分工作正常。用户登录后,我可以看到所有我期望的信息(姓名、ID 等),以及包含用户所属所有组 ID 的声明。

到目前为止,还不错。

现在,我想将这些组 ID 转换为人类可读的组名。为此,我使用 Microsoft.Azure.ActiveDirectory.GraphClient NuGet 包,它提供了 GetObjectsByObjectIdsAsync 方法。此方法似乎是 getObjectsByObjectIds REST 方法的包装器。

为了尝试让它工作,我做了以下工作:

我看到的:当我使用我的 Microsoft 帐户登录我的 ASP.NET 应用程序时,一切正常。但是,当我使用我创建的 AAD 帐户 (TestMember@examplehotmail247.onmicrosoft.com) 登录时,它失败并出现以下错误:

[DataServiceClientException: {"odata.error":{"code":"Authorization_RequestDenied","message":{"lang":"en","value":"Insufficient privileges to complete the operation."},"requestId":"1234e0bb-3144-4494-a5fb-12a937147bcf","date":"2016-12-06T18:39:13"}}] System.Data.Services.Client.BaseAsyncResult.EndExecute(Object source, String method, IAsyncResult asyncResult) +919 System.Data.Services.Client.QueryResult.EndExecuteQuery(Object source, String method, IAsyncResult asyncResult) +116

直接使用 REST api 尝试等效查询(即从图片中取出 ASP.NET)会得到相同的结果。

那么我在这里错过了什么?

更新: 我还授予应用程序以下委派权限(对 Windows Azure Active Directory):登录并读取用户配置文件、读取目录数据、访问作为登录用户的目录。但是,这没有任何区别。

更新 #2: 我什至让 TestMember@examplehotmail247.onmicrosoft.com 成为 AAD 实例的全局管理员,但它仍然没有帮助。

更新 #3: 好的,首先,澄清一下。用户登录后,我的 ASP.NET 应用程序从 OpenID Connect 流程获取授权代码。获得代码后,我将使用 AcquireTokenByAuthorizationCodeAsync 将其交换为访问令牌。访问令牌与用户相关联,因此我想依赖委托权限,而不是应用程序权限。

问题在于,尽管在 Azure 门户中向我的 ASP.NET 应用程序授予了适当的委派权限,但用户从未有机会同意这些权限。

我重新开始在 Azure 中为我的 ASP.NET 应用程序创建一个全新的应用程序注册,这是我发现的:当用户第一次登录时,他们被要求同意任何委托需要权限。但是,如果我在他们第一次登录后更改需要哪些委派权限,则用户下次登录时不会征得同意(对于新需要的权限)。

这绝对不是我所期望的,所以我要打开一个关于这个的新问题。