【问题标题】:Not able to access Microsoft Graph Api using OAuth Access token无法使用 OAuth 访问令牌访问 Microsoft Graph Api
【发布时间】:2022-01-03 13:58:41
【问题描述】:

我正在尝试为我的 OneDrive Business 帐户访问 Microsoft Graph Api。我在 Azure 目录中创建了一个应用程序。 我能够进行身份验证,我得到了一个访问令牌,但是在尝试使用该访问令牌并使用这个 api https://graph.microsoft.com/v1.0/me 时。 我收到此错误:“访问令牌验证失败。无效的观众。” 我不知道我是否缺少访问 Graph APi 的任何权限?

【问题讨论】:

  • 听起来您用于获取令牌的范围不正确。你能展示你在获取令牌时使用的范围吗?令牌中的“aud”值是什么?您可以在例如检查令牌内容jwt.ms
  • 请提供您用于获取令牌的代码或其他方法。
  • 嗨@Vishesh Aalwani,如果我的回答对您有帮助,您可以投票并接受它作为答案(单击答案旁边的复选标记将其从灰色切换为填充)。这对其他社区成员可能是有益的。谢谢

标签: oauth azure-active-directory microsoft-graph-api access-token onedrive


【解决方案1】:

根据Resolve Microsoft Graph authorization errors - Microsoft Graph | Microsoft Docs

API 服务(如 Microsoft Graph)检查 aud 声明(受众) 在收到的访问令牌中匹配它自己期望的值, 如果不是,则会导致 403 Forbidden 错误。一个常见的错误是 此错误的原因是尝试使用为 Azure AD 获取的令牌 要调用的图形 API、Outlook API 或 SharePoint/OneDrive API Microsoft Graph(反之亦然)。确保resource (or scope) 你的app is acquiring a token for matches the API that the app is calling.

正如您的错误消息所说,您的令牌受众无效,您在请求令牌时必须设置错误的范围。请检查 https://jwt.ms 中评论的 aud 声明。尝试在身份验证请求中将范围设置为https://graph.microsoft.com/.default,并将Microsoft apis> Microsoft graph 下的delegatedapplication permissionsgrant admin consent 提供给api。等等 。 api 调用仅支持委托权限,因此您不能使用客户端凭据流来获取令牌。对于 /me 端点,用户需要登录,因此您需要使用 auth 代码流来获取访问令牌。 调用 /me 端点需要delegated permissions.

并且从中调用一个驱动器 api 还需要另一个额外的 permissions 用于不同的活动。

您可以使用Graph Explorer查看所需的权限,并通过资源管理器本身或通过门户授予管理员同意。

如果仍然存在错误,请将 accesstokenacceptedversion 更改为 2,如果它为 null 或 1,反之亦然。 然后再试一次。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    相关资源
    最近更新 更多