繁体   English   中英

Azure 企业应用程序安全组中带有客户端凭据身份验证流程的 Graph API 请求的“未找到用户”

[英]"User not found" for Graph API request in the Azure enterprise app security group with client credentials auth flow

设计

设计概览

目标

获取给定用户的日历事件。

要求

  1. 应用程序应有权访问 MS Graph API。
  2. 应用程序应该像守护进程/后台进程一样运行,而不依赖于用户的登录。
  3. 应用程序应有权访问 Azure Active Directory (AAD) 中最少数量的用户数据。
  4. 应用程序应该能够获取用户的日历事件并创建它们。

实施/设置

  • 履行 (1) Azure(企业)应用程序是按照此处所述创建的。
  • 启用 (2) 客户端凭据流用于设置application permissions
  • 满足 (3) security group - 如此所述 - 由有限数量的用户创建,这些用户具有包含相关权限的相关policy (参见此处)。 该小组后来按照说明连接到该应用程序。
  • 实施 (4) 此处此处操作所需的Calendar.ReadCalendar.ReadWrite已添加到上一个设置步骤中提到的策略中。

测试

使用了两个 HTTP 请求:一个用于获取令牌,另一个用于读取事件。

  1. 来自Identity Platform的令牌请求
curl --location --request POST 'https://login.microsoftonline.com/<TENANT_ID>/oauth2/v2.0/token' \
--data-raw 'client_id=<APPLICATION_TOKEN>&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=<APPLICATION_SECRET>&grant_type=client_credentials'

此处检查令牌后,我发现它包含所需的权限:

  "roles": [
    "Calendars.Read",
    "Calendars.ReadWrite"
  ]
  1. Graph API获取日历事件的请求
curl --location --request GET 'https://graph.microsoft.com/v1.0/users/<USER_ID>/calendar/events' \
--header 'Authorization: Bearer <TOKEN>'

导致以下错误:

{
  "error": {
    "code": "ResourceNotFound",
    "message": "User not found",
    "innerError": {
      "date": "2022-02-08T08:25:39",
      "request-id": "bfaca1f9-e79b-491c-8d75-5a62317e299b",
      "client-request-id": "bfaca1f9-e79b-491c-8d75-5a62317e299b"
    }
  }
}

用户 ID 来自我在 Azure 租户的 Azure Active Directory 详细信息中找到的帐户。 添加其他用户后,我仔细检查了这一点。

询问前调查

这个问题看起来最接近我的情况,因为它使用客户端凭据身份验证流程。 但它对 AAD 中的所有用户使用全局权限,而我们对security group使用更细粒度的方法。 它还显示不同的错误"Resource could not be discovered." 与我的情况下的"User not found"相比。

为了调用 /{user-id}/calendar/events 来工作,如果您使用守护程序应用程序的客户端凭据,用户必须在 Exchange Online 上拥有邮箱。

此外,似乎无法向来宾帐户(在这种情况下为个人帐户)分配许可证,因此用户帐户永远无法访问日历服务(o365 在线交换的一部分),因此无法检索个人的日历信息帐户。

详细说明请参考我在Q&A中类似的回答。

简洁版本
我缺少application permissions并假设它们是在security group级别上分配的。 只有限制发生在那个层面上。

长版
更新后的心理 model 如下所示: 在此处输入图像描述

也就是说需要MS Graph APIapplication permissions
security group仅限制/限制对policy中提到的用户的访问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM