2016-12-06 104 views
1

我尝试使用图形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交换它的访问令牌。访问令牌绑定到用户,所以我想依赖委托权限,而不是应用程序权限。

+0

你试过授予您的应用程序的应用程序级别的权限?尽管读目录数据权限应该可以工作,但它是一个委托权限,它也取决于登录用户的权限。如果用户不是可能导致应用程序无法访问数据的管理员。如果您希望应用无论用户拥有访问权限,都必须授予应用权限。 – juunas

+0

@juunas尝试使用应用程序权限,但它没有改变任何东西 - 相同的错误 – RobSiklos

+0

'TestMember @ examplehotmail247 @ onmicrosoft.com'你的意思是使用退出** Microsoft帐户**添加帐户? –

回答

0

的问题是,虽然适当的委派权限都在Azure的门户网站授予我的ASP.NET应用程序,用户永远不会有机会同意给他们。

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

这绝对不是我所期待的,所以我要打开这个新问题。

+0

这里的新问题:http://stackoverflow.com/q/41023618/270348 – RobSiklos

相关问题