【问题标题】:Fetching user information from Azure AD从 Azure AD 获取用户信息
【发布时间】:2019-09-10 13:00:25
【问题描述】:

我在 Azure AD 上创建了一个应用程序,并为我的应用程序分配了User.Read.All 权限。

话虽如此,我可以从 Postman 为应用程序生成访问令牌。生成访问令牌时我提供 -

client_id: xxxx
client_secret: yyyy
grant_type: client_credentials
scope: https://graph.microsoft.com/.default

使用生成的访问令牌(作为标头Authorization: Bearer zzzz)我向https://graph.microsoft.com/v1.0/users/jhon.doe@domain.com 发送GET 请求。这给了我错误-

403 Forbidden

{
  "error": {
    "code": "Authorization_RequestDenied",
    "message": "Insufficient privileges to complete the operation.",
    "innerError": {
      "request-id": "aaa-bbb-ccc-ddd",
      "date": "2019-09-10T12:44:46"
    }
  }
}

谁能告诉我我做错了什么?

提前致谢。

【问题讨论】:

  • 检查令牌例如jwt.ms。应该有一个 roles 声明,其中包含您分配给应用程序的应用程序权限。
  • @juunas 还有很多其他信息,但我在那里看不到任何角色。没有任何权限相关信息。
  • 您正在查看您在响应中获得的 access_token?在这种情况下,您尚未为您的应用程序分配/授予应用程序权限。
  • 但是转到应用程序的 API 权限区域,我可以看到 User.Read.All 权限已分配给我的应用程序。这不是我看到分配权限的地方吗?
  • 您是否也授予权限?您也需要成为管理员才能执行此操作,因为它是应用程序权限(在某些情况下,普通用户也可以同意委派权限)。

标签: azure azure-active-directory azure-ad-graph-api


【解决方案1】:

您需要添加应用程序权限。 未委托权限。 在您的屏幕截图中,我们可以看到它们是委托的,这意味着它们仅适用于有用户参与身份验证的情况。 由于您使用客户端凭据身份验证,因此不涉及用户,仅涉及应用程序。

当您添加所需的权限时,应该有一个选项可以在委托和应用程序之间进行选择。 选择应用程序,选择必要的权限并授予它们。

【讨论】:

  • 就是这样。非常感谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-08
  • 2020-11-20
  • 1970-01-01
  • 2016-01-29
  • 2021-12-08
  • 2020-06-30
  • 2012-10-02
相关资源
最近更新 更多