【问题标题】:Microsoft Graph API beta endpoint gives 401 UnauthorizedMicrosoft Graph API beta 端点提供 401 Unauthorized
【发布时间】:2017-02-10 09:07:55
【问题描述】:

我正在测试向来宾用户发送加入租户邀请的 Microsoft Graph Beta 端点。我使用的端点是:

https://graph.microsoft.com/beta/invitations

主体:

 {
  "invitedUserEmailAddress": "abc@xyz.com",
  "inviteRedirectUrl": "https://myDomain"
 }

我正在通过 ADAL4J api 为本地管理员用户获得的授权标头中传递不记名令牌。但是,这个调用给了我一个 401 Unauthorized 错误。以下是回复:

{
  "error": {
    "code": "InvalidAuthenticationToken",
    "message": "Access token validation failure.",
    "innerError": {
      "request-id": "91f8129e-70cc-467d-a45b-9309e55788d6",
      "date": "2017-02-10T08:46:09"
    }
  }
}

关于如何让这个请求工作的任何线索?在 Github 上,我经历了其他用户面临相同问题的讨论 (eg)。

【问题讨论】:

  • 您是否检查了访问令牌中的范围声明?您可以使用 jwt.io 之类的网站来检查它们。此外,您的问题标题谈到了 Azure AD Graph,但这是 Microsoft Graph API。不要混淆它们,它们是具有不同功能的不同 API。
  • @juunas 我可以使用 jwt.io 从访问令牌中获取信息,但我不确定范围声明是什么。你指的是权限吗?我已更改问题的标题。
  • 我已授予 Microsoft Graph API 应用程序中的所有权限。我也可以在令牌信息中看到。
  • 一个常见的错误是请求所有委派的权限,然后使用使用 client_credentials(仅限应用程序)流程获取的令牌调用,反之亦然或有关令牌的更多详细信息。您应该能够将访问令牌直接粘贴到 jwt.calebb.net 以查看令牌及其声明。
  • @DanKershaw-MSFT 声称这是 ("scp:Calendars.Read Calendars.Read.Shared") 你的意思是什么?

标签: java azure microsoft-graph-api azure-ad-graph-api


【解决方案1】:

发送的令牌是通过资源“https://graph.windows.net”获得的。 Microsoft Graph API 的预期资源/受众是“https://graph.microsoft.com”。更新您的应用程序清单以将 Microsoft Graph 作为资源包含并请求所需的权限。然后使用上述资源/受众请求令牌。

【讨论】:

  • 另外(连同 Sriram 的建议),请确保您正在配置您的应用以请求正确的权限。请查看创建邀请文档:graph.microsoft.io/en-us/docs/api-reference/beta/api/…,其中描述了您的应用所需的权限。
  • 非常感谢@Sriram Dhanasekaran-MSFT 和 Dan Kershaw 这个解决方案对我有用!
【解决方案2】:

我的处境与@adarsh hegde 完全一样。但我的目标是蔚蓝的 B2C。 我可以获取 Windows 图形的令牌(使用资源“https://graph.windows.net”),并且可以在我的 Web 应用程序中创建用户,并使用正确的权限注册。

我所做的是同时获取 graph.microsoft.com 的令牌,但是这个令牌不允许我使用邀请给我和你一样的错误: { "error": { "code": "InvalidAuthenticationToken", "message": "Access token validation failure.", "innerError": { "request-id": "91f8129e-70cc-467d-a45b-9309e55788d6", "date": "2017-02-10T08:46:09" } } }

更新: 所以这是我到目前为止所做的步骤:

  1. ADB2C 目录
  2. 在其中注册了 OpenID 的 Web 应用程序,具有在此 link 之后管理 AD 中的用户所需的权限
  3. 当管理员登录后,处于信任模式的 Web 应用可以让他管理用户(创建/添加/等...)
  4. 现在我想使用 MS 图 (graph.microosoft.com) 的 InvitationManager 部分来发送邀请邮件。我可以兑换在 OpenIdConnectAuthenticationNotifications 中收到的代码以获取 MS 图的访问令牌吗?知道我已经这样做了,但对于 AD 图 (graph.windows.net)

感谢您的帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 2014-06-23
    • 1970-01-01
    相关资源
    最近更新 更多