如何通过REST API获取Azure DevOps特定Git分支的用户权限?
针对Azure DevOps Git分支查询权限及生成权限报告的方法
分支级权限查询的正确API用法
你之前调用的权限API默认返回全局权限,核心原因是缺少**分支对应的安全令牌(Security Token)**参数。要查询分支级权限,必须在API请求中指定该分支的token:
分支Security Token的构造规则
Git分支的安全令牌格式固定为:repoV2/<项目ID>/<仓库ID>/refs/heads/<分支名>
注意:分支名需要做URL编码,比如feature/my-branch要转成feature%2Fmy-branch。带分支token的权限查询API
将token作为参数传入原API,即可查询指定分支的权限(以Force Push权限为例,权限值128,Git权限命名空间ID为2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87):
GET https://dev.azure.com/{organization}/{project}/_apis/permissions/2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87/128?token=repoV2%2F<项目ID>%2F<仓库ID>%2Frefs%2Fheads%2F<编码后的分支名>&api-version=7.0
该请求会直接返回当前调用者在目标分支上的Force Push权限状态。
生成分支权限报告的方法
给Permissions Report API添加分支token参数,即可生成针对特定分支的权限报告:
GET https://dev.azure.com/{organization}/{project}/_apis/permissionsreport/2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87?token=repoV2%2F<项目ID>%2F<仓库ID>%2Frefs%2Fheads%2F<编码后的分支名>&api-version=7.0
返回结果会包含该分支下所有身份(用户、组)的权限分配详情,以及当前用户的有效权限汇总。
快速获取分支Security Token的技巧
如果不想手动构造token,可以先调用Git分支详情API获取分支元数据:
GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repoId}/refs/heads/{branchName}?api-version=7.0
从返回结果的url字段中,可直接提取出类似repoV2/xxx/xxx/refs/heads/xxx的路径部分,URL编码后即可作为token使用。
内容的提问来源于stack exchange,提问作者Bernard MULLER
相关产品推荐
相关产品推荐

