是否可以通过Azure DevOps API查看任何用户的权限?

问题描述 投票:1回答:1

是否可以通过Azure DevOps API查看任何给定用户在DevOps项目中具有哪些权限?

我一直在查看“https://dev.azure.com/{organization} / _ apis / permissions / {securityNamespaceId} / {permissions}?api-version = 4.1”,但仅适用于请求的调用者。

有什么想法吗?

谢谢

azure-devops
1个回答
0
投票

如果您要在此页面中查看权限(项目设置=>权限=>用户)

enter image description here

然后您可以使用这两种解决方法来实现:

1。使用具有devops扩展名的Azure cli:

前提条件: Install the Azure Cli,具有azure-devops扩展名,然后运行az login以使用您的凭据登录。这是quick start

然后您可以使用az devops security permission show 列出特定用户的权限。

示例:

az devops security permission show --id 52d39943-cb85-4d7f-8fa8-c6baac873819 --subject [email protected] --token '$PROJECT:vstfs///Classification/TeamProject/{ProjectID}'

通常,此安全名称空间的ID始终为52d39943-cb85-4d7f-8fa8-c6baac873819ProjectID是代表您的项目的ID。您可以使用Projects-list rest api轻松找到它。主题可以是特定用户的电子邮件ID的电子邮件地址。

这种方式的优势:

因为idtoken在一个项目中始终是该值。我们只需要更改主题即可获得用户的权限。

az devops security permission show --id 52d39943-cb85-4d7f-8fa8-c6baac873819 --subject [email protected] --token '$PROJECT:vstfs///Classification/TeamProject/{ProjectID}'

az devops security permission show --id 52d39943-cb85-4d7f-8fa8-c6baac873819 --subject [email protected] --token '$PROJECT:vstfs///Classification/TeamProject/{ProjectID}'

...

运行以上命令时的响应如下所示:

enter image description here

2。使用未记录的Azure devops rest api:

https://dev.azure.com/{YourOrgName}/_apis/Contribution/HierarchyQuery?api-version=5.0-preview

我们应该使用Post方法+application/jsonContent-Type。 request body看起来像这样:

{
    "contributionIds": ["ms.vss-admin-web.org-admin-groups-permissions-pivot-data-provider"],
    "dataProviderContext": {"properties": {
        "subjectDescriptor": "msa.xxx",
        "sourcePage": {
            "url": "https://dev.azure.com/{OrgName}/{ProjectName}/_settings/permissions?subjectDescriptor=msa.xxx",
            "routeId": "ms.vss-admin-web.project-admin-hub-route",
            "routeValues": {
                "project": "xxx",
                "adminPivot": "permissions",
                "controller": "ContributedPage",
                "action": "Execute",
                "serviceHost": "xxx (xxx)"
            }
        }
    }}
}

此未记录的rest api可能更复杂。我建议您使用F12自己获取正确的请求正文。让我们以边缘浏览器为例:

enter image description here

1。在Web Portal中导航此页面并进入F12模式,然后单击清除会话按钮以清空列表。

2。查找其响应主体将返回与用户有关的所有权限的会话:

enter image description here

在我的测试中,该会话将收到1.10kb〜1.20kb,您可以轻松找到它。然后单击该会话,并转到其响应主体并启用漂亮打印。

enter image description here

您可以直接使用该body来获取一个用户的权限。如果要获取其他用户,只需将当前用户的subjectDescriptor替换为其他用户的subjectDescriptor。关于什么是subjectDescriptor以及如何获取它们,可以参考我的another answer

© www.soinside.com 2019 - 2024. All rights reserved.