【问题标题】:Microsoft Graph API -Insufficient privileges, Request_ResourceNotFound - Azure Permissions IssuesMicrosoft Graph API - 权限不足,Request_ResourceNotFound - Azure 权限问题
【发布时间】:2020-01-14 13:34:02
【问题描述】:

我正在尝试使用 Microsoft Graph API 做一些我认为应该相当简单的事情。

首先我想做的是获取我组织中所有用户的列表。

要安装 Microsoft Graph SDK,我按照此处的示例进行操作:

https://docs.microsoft.com/en-us/graph/sdks/sdk-installation

我正在使用客户端凭据提供程序连接到 MS Graph,如下所述:

https://docs.microsoft.com/en-us/graph/sdks/choose-authentication-providers?tabs=CS

然后列出我正在使用文档中的 C# 示例的用户,如下所示:

https://docs.microsoft.com/en-us/graph/api/user-list?view=graph-rest-1.0&tabs=csharp

所以我的代码如下所示:

       IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
       .Create(clientId)
       .WithTenantId(tenantID)
       .WithClientSecret(clientSecret)
       .Build();

        ClientCredentialProvider authProvider = new ClientCredentialProvider(confidentialClientApplication);

        GraphServiceClient graphClient = new GraphServiceClient(authProvider);


        var me = await graphClient.Me
              .Request()
              .GetAsync();

        var org = await graphClient.Organization
          .Request()
          .GetAsync();



        var users = await graphClient.Users
            .Request()
            .GetAsync();

错误消息

我:

“/”应用程序中的服务器错误。

代码:Request_ResourceNotFound

消息:资源“10028d9z-115c-45f9-a12b-722a4aa42c8k”不存在或其查询的引用属性对象之一不存在。 内部错误: 附加数据: 请求 ID: aedf34aa-f548-474e-82g6-956bae321088 ClientRequestId:aklf34aa-f5r9-474e-82c4-956bae325288

组织:

“/”应用程序中的服务器错误。

代码:Authorization_RequestDenied

消息:权限不足,无法完成操作。 内部错误: 附加数据: 请求 ID:9xd043m9-9b58-46dc-93d8-a183b4880fz2 ClientRequestId:9cd043c8-9b58-46hj-93d8-a183b4880fe2

用户:

“/”应用程序中的服务器错误。

代码:Authorization_RequestDenied

消息:权限不足,无法完成操作。 内部错误: 附加数据: 请求 ID:2a88fd01-34aa-4841-947c-c196ce885d75 ClientRequestId:2a88fd01-34aa-4841-947c-c189ce625d75

我是 Azure 的新手,因此我需要一些帮助来了解我是否需要更改代码中的方法,或在 Azure 中进行配置。

更新:这是权限的样子,我需要在 Azure 的其他屏幕上设置其他权限吗?

【问题讨论】:

  • 您是否在 azure 租户上添加了 Application User.Read.All, User.ReadWrite.All, Directory.Read.All, Directory.ReadWrite.All 权限?
  • 我已经设置了一些权限,但我不确定它们是否在正确的地方设置正确或正确我将发布一个带有权限屏幕截图的更新
  • 所以你必须在你添加的 API 上允许你的consent,你应该有global admin 凭据。

标签: c# azure azure-active-directory microsoft-graph-api azure-web-app-service


【解决方案1】:

/me 不起作用的原因很简单。 您将 API 作为应用程序调用,而不是代表用户。 所以 /me 没有任何意义。 您必须使用 /users/{id} 端点。

其他问题是由于缺乏同意引起的。 您已要求权限,但从屏幕截图中可以看出,它们尚未被授予。 您可以顺便删除 Delegated 权限,它们在没有用户的情况下作为应用调用时不适用。

您似乎也没有授予这些权限的权限。 请求管理员(全局管理员)同意您的权限。

【讨论】:

  • 感谢您的澄清,您已经确认了我看到的很多可疑的事情,如果解决了问题,我会让管理员看看我会标记这是正确的答案 - 感谢您的输入
猜你喜欢
  • 2018-01-13
  • 1970-01-01
  • 2017-04-23
  • 2017-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多