You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Azure DevOps(ADO)API获取用户对仓库的权限?

获取Azure DevOps代码仓库用户权限的API方法

前置准备

  • 生成个人访问令牌(PAT):需要至少包含代码(读取)权限,生成路径:ADO组织设置 → 个人访问令牌 → 新建令牌。
  • 收集必要信息:
    • 组织名称(ADO域名前缀)
    • 项目ID/项目名称
    • 目标代码仓库ID(可从仓库页面URL获取,或通过GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=7.1-preview.1接口批量获取)
    • 用户身份描述符(descriptor):通过用户邮箱/DisplayName查询获取,接口:
      GET https://vssps.dev.azure.com/{organization}/_apis/identities?searchFilter=General&value={userEmailOrName}&api-version=7.1-preview.1
      
      取返回结果中descriptor字段值。

核心API调用

使用权限评估接口查询用户对指定仓库的最终有效权限:

GET https://dev.azure.com/{organization}/{project}/_apis/securitypermissions/permissionevaluation?api-version=7.1-preview.1

关键参数说明

  • securityNamespaceId:固定值2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87(对应代码仓库的安全命名空间)
  • token:格式为repoV2/{projectId}/{repoId},替换为实际项目ID和仓库ID
  • descriptor:前面获取的用户身份描述符

请求示例

cURL 示例

curl -u :{yourPAT} "https://dev.azure.com/{orgName}/{projectName}/_apis/securitypermissions/permissionevaluation?securityNamespaceId=2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87&token=repoV2/{projectId}/{repoId}&descriptor={userDescriptor}&api-version=7.1-preview.1"

注:{yourPAT}替换为你的个人访问令牌,冒号不可省略(用于Basic Auth的格式要求)

PowerShell 示例

$pat = "{yourPAT}"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$pat"))

$uri = "https://dev.azure.com/{orgName}/{projectName}/_apis/securitypermissions/permissionevaluation?securityNamespaceId=2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87&token=repoV2/{projectId}/{repoId}&descriptor={userDescriptor}&api-version=7.1-preview.1"

Invoke-RestMethod -Uri $uri -Headers @{Authorization = "Basic $base64AuthInfo"} -Method Get

返回结果解析

返回的JSON中核心字段说明:

  • allowedPermissions:用户被允许的权限位掩码(十进制)
  • deniedPermissions:用户被拒绝的权限位掩码
  • effectivePermissions:最终生效的权限位掩码(允许-拒绝的结果)

要将位掩码转换为可读权限名称,可调用安全命名空间详情接口获取对应关系:

GET https://dev.azure.com/{organization}/_apis/securitynamespaces/2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87?api-version=7.1-preview.1

返回的actions数组中,每个对象的bit对应位值,displayName是权限名称(例如:bit:1对应“读取”,bit:2对应“贡献”,bit:4对应“管理”等)。

注意事项

  • API返回的是最终有效权限,包含继承自项目/组织的权限以及直接分配给仓库的权限
  • 如果需要批量查询多个用户或仓库,可循环调用该接口,或使用批量权限评估接口(需更高权限)

内容的提问来源于stack exchange,提问作者user10434309

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 15:32:28