c# - 图 Api - 401 未经授权

标签 c# asp.net-mvc azure asp.net-web-api office365

刚刚开始使用 graph/office API,哇,这是一个雷区!

只是想知道是否有人可以给我任何建议?当我尝试联系 https://graph.microsoft.com/beta/me/files 时收到 401 .

我的 JWT 如下:

{
  "aud": "https://graph.windows.net/",
  "iss": "https://sts.windows.net/916970f4-e570-4036-a353-8ae647af1d3e/",
  "iat": 1444794383,
  "nbf": 1444794383,
  "exp": 1444798283,
  "ver": "1.0",
  "tid": "916970f4-e570-4036-a353-8ae647af1d3e",
  "oid": "c454b826-612f-4525-8995-87f1a24dc3df",
  "sub": "c454b826-612f-4525-8995-87f1a24dc3df",
  "idp": "https://sts.windows.net/916970f4-e570-4036-a353-8ae647af1d3e/",
  "appid": "568d0906-4131-4b97-8b08-9efdbe1636c4",
  "appidacr": "1"
}

我的 token 是以一种相当奇怪的方式获取的...我有一个 Web 项目 azure AD,其 token 用于获取 Web api Azure Ad token ,然后该 token 用于生成图形 api jwt,如上所示.

这是如何工作的:

enter image description here

最佳答案

抱歉,您在这里遇到了问题。有两件事...

  1. 您收到 401 是因为 token 的受众适用于 Azure AD Graph API,但它需要适用于 Office 365 统一 API,因为这是 2 个不同的 API。如需获取统一API的Token,您需要在Token获取请求中指定资源为 https://graph.microsoft.com 。基本上, token 不能互换地用于不同的服务 - token 是特定于受众/资源的。我们应该在这里有一些额外的信息和示例 http://dev.office.com/unifiedapis .
  2. Office 365 统一 API 仅支持代码流(也称为应用+用户或委托(delegate)流)。您的 token 似乎是客户端凭据流 token (即仅限应用程序 - 无用户上下文)。这种 token /流对于统一的 API 来说尚不可能,但这是我们正在努力的事情。请继续关注。

希望这有帮助,

关于c# - 图 Api - 401 未经授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33116473/

相关文章:

c# - 如何跟踪异步文件上传到 azure 存储的进度

c# - 填充列表的通用方法无法创建 T()

asp.net-mvc - Asp.Net MVC 中的日期显示选项

azure - Terraform Azurerm 抛出此处不需要名为 "java_version"的参数

sql-server - Sql Server JSON 结果分为多行

c# - 处理 .NET IDisposable 对象

c# - 我如何从 ViewResult 拦截 HTML,修改它并提供它?

javascript - 我的 View 没有被渲染(ASP.NET/Angular)

c# - 使用 OpenXML 替换 Word 文档中的模板字段

c# - 反序列化以 id 为键的 JSON 对象结构