Azure DevOps Rest API 不会 return 属于特定组成员的组
AzureDevOps RestAPI does not return groups that are a member of a certain group
我观察到 Azure DevOps REST 的奇怪行为 API。
此文档页面 https://docs.microsoft.com/en-us/rest/api/azure/devops/memberentitlementmanagement/?view=azure-devops-rest-5.1 说“成员是添加到帐户的用户或组。”
但是当我尝试让某个组的成员像这样时:
https://vsaex.dev.azure.com/XXXXX/_apis/GroupEntitlements/YYY/members?api-version=5.1-preview.1
它returns所有用户成员都很好,悬停没有YYY组的组成员。同时我可以看到YYY包含了相当多的组是YYY的成员。
同时我没有看到其他 API 看起来能够满足我的需求。
我的个人访问令牌拥有所有对象类型的所有 'Read' 权限。
我错过了一些明显的东西吗?
提前致谢。
作为解决方法,我们可以使用 API 列出所有组并获取组 ID(响应正文中的组 ID 为 originId
)
GET https://vssps.dev.azure.com/{Org name}/_apis/graph/groups?api-version=6.0-preview.1
通过下面的 REST API
获取一组 subjectDescriptor
注意:subjectDescriptor
是响应正文中的字段value
GET https://vssps.dev.azure.com/{Org name}/_apis/graph/descriptors/{Group ID}
列出群组成员
POST https://dev.azure.com/{Org name}/_apis/Contribution/HierarchyQuery?api-version=5.1-preview.1
请求正文
{
"contributionIds": [
"ms.vss-admin-web.org-admin-members-data-provider"
],
"dataProviderContext": {
"properties": {
"subjectDescriptor": "{subjectDescriptor}",
"sourcePage": {
"url": "https://dev.azure.com/{Org name}/_settings/groups?subjectDescriptor={subjectDescriptor}",
"routeId": "ms.vss-admin-web.collection-admin-hub-route",
"routeValues": {
"adminPivot": "groups",
"controller": "ContributedPage",
"action": "Execute"
}
}
}
}
}
结果:
注意:我建议您将初始问题提交给 Developer Community,他们会检查并联系产品团队。
更新1
检查组权限并获取 NamespaceId 和 Token。
GET https://dev.azure.com/{Org name}/_apis/Contribution/HierarchyQuery?api-version=6.0-preview
请求正文
{
"contributionIds": [
"ms.vss-admin-web.org-admin-groups-permissions-pivot-data-provider"
],
"dataProviderContext": {
"properties": {
"subjectDescriptor": "{subjectDescriptor},
"sourcePage": {
"url": "https://dev.azure.com/v-viliu/_settings/groups?subjectDescriptor={subjectDescriptor}",
"routeId": "ms.vss-admin-web.collection-admin-hub-route",
"routeValues": {
"adminPivot": "groups",
"controller": "ContributedPage",
"action": "Execute"
}
}
}
}
}
通过下面获取描述符API
GET https://dev.azure.com/{Org name}/_apis/accesscontrollists/{securityNamespaceId}?api-version=6.0
Get group permission detail info
https://dev.azure.com/{Org name}/_apis/accesscontrollists/{securityNamespaceId}?token={Token}&descriptors={descriptor}&api-version=6.0
注意:这是二进制代码。
POST https://dev.azure.com/{organization}/_apis/accesscontrollists/{securityNamespaceId}?api-version=6.0
我们可以通过上面的API获取到请求体,如果需要更改权限,只需要更改字段Allow和Deny的值即可。
你也可以参考这篇。
我观察到 Azure DevOps REST 的奇怪行为 API。 此文档页面 https://docs.microsoft.com/en-us/rest/api/azure/devops/memberentitlementmanagement/?view=azure-devops-rest-5.1 说“成员是添加到帐户的用户或组。”
但是当我尝试让某个组的成员像这样时: https://vsaex.dev.azure.com/XXXXX/_apis/GroupEntitlements/YYY/members?api-version=5.1-preview.1
它returns所有用户成员都很好,悬停没有YYY组的组成员。同时我可以看到YYY包含了相当多的组是YYY的成员。
同时我没有看到其他 API 看起来能够满足我的需求。 我的个人访问令牌拥有所有对象类型的所有 'Read' 权限。 我错过了一些明显的东西吗? 提前致谢。
作为解决方法,我们可以使用 API 列出所有组并获取组 ID(响应正文中的组 ID 为 originId
)
GET https://vssps.dev.azure.com/{Org name}/_apis/graph/groups?api-version=6.0-preview.1
通过下面的 REST API
获取一组subjectDescriptor
注意:subjectDescriptor
是响应正文中的字段value
GET https://vssps.dev.azure.com/{Org name}/_apis/graph/descriptors/{Group ID}
列出群组成员
POST https://dev.azure.com/{Org name}/_apis/Contribution/HierarchyQuery?api-version=5.1-preview.1
请求正文
{
"contributionIds": [
"ms.vss-admin-web.org-admin-members-data-provider"
],
"dataProviderContext": {
"properties": {
"subjectDescriptor": "{subjectDescriptor}",
"sourcePage": {
"url": "https://dev.azure.com/{Org name}/_settings/groups?subjectDescriptor={subjectDescriptor}",
"routeId": "ms.vss-admin-web.collection-admin-hub-route",
"routeValues": {
"adminPivot": "groups",
"controller": "ContributedPage",
"action": "Execute"
}
}
}
}
}
结果:
注意:我建议您将初始问题提交给 Developer Community,他们会检查并联系产品团队。
更新1
检查组权限并获取 NamespaceId 和 Token。
GET https://dev.azure.com/{Org name}/_apis/Contribution/HierarchyQuery?api-version=6.0-preview
请求正文
{
"contributionIds": [
"ms.vss-admin-web.org-admin-groups-permissions-pivot-data-provider"
],
"dataProviderContext": {
"properties": {
"subjectDescriptor": "{subjectDescriptor},
"sourcePage": {
"url": "https://dev.azure.com/v-viliu/_settings/groups?subjectDescriptor={subjectDescriptor}",
"routeId": "ms.vss-admin-web.collection-admin-hub-route",
"routeValues": {
"adminPivot": "groups",
"controller": "ContributedPage",
"action": "Execute"
}
}
}
}
}
通过下面获取描述符API
GET https://dev.azure.com/{Org name}/_apis/accesscontrollists/{securityNamespaceId}?api-version=6.0
Get group permission detail info
https://dev.azure.com/{Org name}/_apis/accesscontrollists/{securityNamespaceId}?token={Token}&descriptors={descriptor}&api-version=6.0
注意:这是二进制代码。
POST https://dev.azure.com/{organization}/_apis/accesscontrollists/{securityNamespaceId}?api-version=6.0
我们可以通过上面的API获取到请求体,如果需要更改权限,只需要更改字段Allow和Deny的值即可。
你也可以参考这篇