【问题标题】:Cannot find AAD group using Identities ADO API使用身份 ADO API 找不到 AAD 组
【发布时间】:2021-07-16 19:09:29
【问题描述】:

我正在尝试复制 this process 将审阅者添加到我的 ADO PR 的方法,并希望专门使其适用于 AAD 组。据我了解,this endpoint of adding reviewers to a PR 需要一个单独的 ID,它不是用户/组的对象 ID(我称之为 ADO ID)。我正在尝试使用 this endpoint 通过提供 AAD 组的对象 ID 来提取 ADO ID。我已经成功地为某些群体找到了它,但没有为其他群体找到它,我不确定为什么会这样。我也成功地使用它通过指定他们的电子邮件来找到用户,但对于组来说它有点棘手。我尝试指定组的名称,但得到的结果与使用对象 ID 相同。我无权访问该组的身份 ID、身份描述符或主题描述符。请指教,谢谢。

【问题讨论】:

  • 嗨@user13794359,进展如何?您是否尝试过我回答中的建议?对你有帮助吗?请尝试一下,如果有任何进展,请随时告诉我。
  • @BrightRan-MSFT 我试过了,它似乎不适合我

标签: azure azure-devops azure-active-directory


【解决方案1】:

注意:在执行以下方法之前,请确保您的组织已连接到您要添加的组所在的正确 AAD。

直接搜索AAD组并将其添加到Pull Request中,步骤如下:

  1. 执行以下 API 以搜索并获取要添加的 AAD 组的详细信息。
    • 请求 URI:
      POST https://dev.azure.com/{organization}/_apis/IdentityPicker/Identities?api-version=5.0-preview.1
      
    • 请求正文:
      {
          "query": "{AAD group name}",
          "identityTypes": ["user", "group"],
          "operationScopes": ["ims", "source"],
          "options": {
              "MinResults": 5,
              "MaxResults": 40
          },
          "properties": [
              "DisplayName",
              "IsMru",
              "ScopeName",
              "SamAccountName",
              "Active",
              "SubjectDescriptor",
              "Department",
              "JobTitle",
              "Mail",
              "MailNickname",
              "PhysicalDeliveryOfficeName",
              "SignInAddress",
              "Surname",
              "Guest",
              "TelephoneNumber",
              "Manager",
              "Description"
          ]
      }
      
    • 响应正文:
      {
          "results": [
              {
                  "queryToken": "addtovsts",
                  "identities": [
                      {
                          "entityId": "{entityId}",
                          "entityType": "Group",
                          "originDirectory": "aad",
                          "originId": "{AAD group ID}",
                          "localDirectory": null,
                          "localId": null,
                          "displayName": "{AAD group name}",
                          "scopeName": "{AAD name}",
                          "samAccountName": null,
                          "active": null,
                          "subjectDescriptor": null,
                          "department": null,
                          "jobTitle": null,
                          "mail": "{mail}",
                          "mailNickname": "{mailNickname}",
                          "physicalDeliveryOfficeName": null,
                          "signInAddress": null,
                          "surname": null,
                          "guest": false,
                          "telephoneNumber": null,
                          "description": null,
                          "isMru": false
                      }
                  ],
                  "pagingToken": ""
              }
          ]
      }
      
  2. 使用之前 API 返回的详细信息,执行以下 API 以将 AAD 组添加到拉取请求中。
    • 请求 URI:
      PUT https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pullRequests/{pullRequestId}/reviewers?api-version=5.0
      
    • 请求正文:
      {
          "entityId": "{entityId}",
          "entityType": "Group",
          "active": null,
          "department": null,
          "description": null,
          "displayName": "{AAD group name}",
          "guest": false,
          "id": "{AAD group ID}",
          "isAadIdentity": true,
          "isContainer": true,
          "isHosted": true,
          "isMru": false,
          "isRequired": false,  // 'true' will set the group as the Required Reviewer, 'false' is Optional Reviewer
          "jobTitle": null,
          "localDirectory": null,
          "localId": null,
          "mail": "{mail}",  // if you did not set mail, set the value same as 'mailNickname'
          "mailNickname": "{mailNickname}",
          "originDirectory": "aad",
          "originId": "{AAD group ID}",
          "physicalDeliveryOfficeName": null,
          "samAccountName": null,
          "scopeName": "{AAD name}",
          "signInAddress": null,
          "subjectDescriptor": null,
          "surname": null,
          "telephoneNumber": null,
          "vote": 0
      }
      

【讨论】:

  • 感谢您的帮助@Bright Ran-MSFT。我已经能够根据您的建议找到 AAD 小组。如果我可以问,您链接的第一个请求是否有任何文件?我一直无法在上面找到任何东西。另外,你知道第二个请求中的所有这些字段是否真的是必需的吗?我查看了this documentation,发现很多字段现在已弃用。
  • 嗨@user13794359,对于第一个API,我也没有找到任何关于它的文档。实际上,我是从浏览器上“Developer tools”的“Network”标签中获得的(按F12)。从 'Developer tools' 中,您可以找到许多文档中未提及的有用 API。对于第二个请求的 API,并非所有列出的属性都是必需的。通常,您可以省略第一个 API 中返回值为null 的可选属性。
  • 一个非常好的答案@BrightRan-MSFT。您究竟是从哪里找到这些选项的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-25
  • 2021-06-10
  • 2020-10-14
  • 2018-12-17
相关资源
最近更新 更多