【问题标题】:Why is this "AccessDenied" while Communicating with Microsoft Graph API?为什么在与 Microsoft Graph API 通信时出现“AccessDenied”?
【发布时间】:2020-04-27 01:05:43
【问题描述】:

我无法访问 Microsoft graph 中的端点。

当我设置好通信后,我会将文件上传到用户的一个驱动器 但现在我只是想获取驱动器中的项目列表。

这是我从https://graph.microsoft.com/v1.0/drives/{{drive_id}}/root/children 得到的回复

{
  "error": {
  "code": "AccessDenied",
  "message": "Either scp or roles claim need to be present in the token.",
  "innerError": {
  "request-id": "123",
    "date": "2020-01-09T11:43:20"
  }
 }
}

我在端点 https://graph.microsoft.com/v1.0/me/ 上使用图形资源管理器检索了 drive_id 在已登录的用户上。

需要注意的是我可以使用这个端点https://graph.microsoft.com/v1.0/subscriptions 所以我必须用访问令牌做一些正确的事情。

我按照this 教程使用客户端凭据流获取访问令牌。

这是我用来获取访问令牌的代码

httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www- 
 form-urlencoded"));
            var req = new HttpRequestMessage(HttpMethod.Post, $"https://login.microsoftonline.com/<tenant>/oauth2/token");
            req.Content = new FormUrlEncodedContent(new Dictionary<string, string>
            {
                {"grant_type", "client_credentials"},
                {"client_id", "123"},
                {"client_secret", "123"},
                {"resource", "https://graph.microsoft.com"}
            });

当我解码 JWT 时,我在令牌中看不到任何范围,但如果我理解正确的话 header 应该得到管理员允许的范围。

管理员已为我的应用授予图表浏览器的以下权限: (虽然我没有委托权限,但这有关系吗?)

Filse.Read,
Files.ReadWriteAll,
Sites.ReadWtiteAll,
User.Read

我在邮递员中使用this集合进行测试。

提前感谢任何建议。

【问题讨论】:

标签: c# microsoft-graph-api


【解决方案1】:

来自 Marc LaFleurs 的回答:

首先要了解的是,您不能同时获得应用程序和委托权限,这是一个非此即彼的情况。您收到的类型完全取决于您用于请求令牌的 OAuth 授权:

授权码和隐式返回带有 scp 属性的委托令牌 客户端凭据返回具有角色属性的应用程序令牌 第二件事是您已向两个不同的 API 请求范围。根据您的选择,您将无法通过 Microsoft Graph 访问 SharePoint,因为您只请求访问旧版 SharePoint API。更重要的是,您只请求了 Graph 的 Delegated User.Read 范围,因此当您使用客户端凭据获取令牌时,该令牌将没有任何权限。

为了获得用于读取 SharePoint 网站的应用程序令牌,您需要选择 Sites.Read.All Microsoft Graph Application permission

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多