我尝试使用图形API获取有关Azure Active Directory组的信息,但我不断收到“Authorization_RequestDenied”响应。Authorization_Request当尝试使用图形API从Azure Active Directory获取组
此问题与Insufficient privileges error when trying to fetch signed in user's group membership using Azure AD Graph API类似,但该问题的答案对我无效。
这里是我做了什么:
- 使用我的Microsoft帐户登录到Azure的门户(例如
[email protected]
) - 设置用于测试的Azure中的Active Directory实例。实例的域是一样的东西
examplehotmail247.onmicrosoft.com
- 创建日期(
[email protected]
) - 创建一些组的用户,并提出的那些基团
- 创建使用OpenID连接配置为验证ASP.NET应用程序以AAD的用户部分。
- 在AAD中注册应用程序,创建客户端密钥,回复URL等。
- 在AAD中修改了应用程序的清单,以便返回组成员声明。
验证部分正常工作。用户登录后,我可以看到我期望的所有信息(名称,ID等)以及包含用户所属的所有组的ID的声明。
到目前为止,这么好。
现在,我想将这些组ID转换为可读的组名称。为此,我使用的是Microsoft.Azure.ActiveDirectory.GraphClient
NuGet包,它提供了一个GetObjectsByObjectIdsAsync
方法。此方法似乎是REST方法的包装。
,试图得到这个工作,我已经做了以下内容:
- 在Azure的门户,我已经授予的“登录和读取用户配置文件”和“读目录数据”的权限我的应用程序。
- 使用我的Microsoft帐户
我看到什么在我的ASP.NET应用程序至少一次登录:当我使用我的Microsoft帐户登录到我的ASP.NET应用程序,一切正常。然而,当我登录使用我创建了AAD帐户([email protected]
)时,出现以下错误:
[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:我甚至让[email protected]
AAD实例的全局管理员,它仍然没有帮助。
更新#3:好了,第一,一些澄清。用户登录后,我的ASP.NET应用程序从OpenID Connect流获取授权码。一旦我得到的代码,我使用AcquireTokenByAuthorizationCodeAsync
交换它的访问令牌。访问令牌绑定到用户,所以我想依赖委托权限,而不是应用程序权限。
你试过授予您的应用程序的应用程序级别的权限?尽管读目录数据权限应该可以工作,但它是一个委托权限,它也取决于登录用户的权限。如果用户不是可能导致应用程序无法访问数据的管理员。如果您希望应用无论用户拥有访问权限,都必须授予应用权限。 – juunas
@juunas尝试使用应用程序权限,但它没有改变任何东西 - 相同的错误 – RobSiklos
'TestMember @ examplehotmail247 @ onmicrosoft.com'你的意思是使用退出** Microsoft帐户**添加帐户? –