能否通过Azure DevOps API查看任意用户的项目权限?
Azure DevOps API查看用户权限的问题解答
嘿,我来帮你梳理下这个问题的解决方案:
1. 能否通过API查看任意用户的权限?
可以,但有个关键前提:你的账号必须具备足够的权限,比如项目集合管理员权限,或者拥有对应安全命名空间的「查看权限」权限。如果权限不够,API会直接返回权限不足的错误。
2. 能否查看指定用户在DevOps项目内的权限?
完全没问题!你之前用的接口其实是专门用来查询当前请求者自身权限的,所以才会只对发起者生效。接下来给你说正确的用法:
3. 针对指定用户的权限查询方案
查询指定用户的项目级权限
使用这个接口(推荐用较新的API版本,兼容性更好):
GET https://dev.azure.com/{organization}/{project}/_apis/permissions/{securityNamespaceId}?api-version=7.1-preview.1&userId={userId}&token={projectToken}
参数解释:
{securityNamespaceId}:不同的权限类型对应不同的ID,比如项目核心权限的ID是58450967-806b-4dfa-bb43-6e0c3c96910b{userId}:目标用户的唯一标识符(不是邮箱,是Azure DevOps内的用户GUID),可以通过下面的接口获取{projectToken}:项目的权限令牌,格式为vstfs:///Classification/TeamProject/{projectId},其中{projectId}是项目的GUID
获取目标用户的ID
如果你只有用户的邮箱或名称,可以先调用这个接口查询用户信息:
GET https://dev.azure.com/{organization}/_apis/graph/users?api-version=7.1-preview.1&subjectTypes=user&searchFilter=General&searchText={userEmailOrName}
额外提示
- 确保你的请求账号拥有「查看项目权限」的权限,比如项目管理员或者集合管理员身份
- 如果你需要查询其他类型的权限(比如代码仓库、工作项),可以先获取对应的
securityNamespaceId,通过这个接口查询所有可用的命名空间:
GET https://dev.azure.com/{organization}/_apis/securitynamespaces?api-version=7.1-preview.1
内容的提问来源于stack exchange,提问作者Anders Knudsen
相关产品推荐
相关产品推荐

