调用Azure DevOps API进行构建租约操作所需权限及401错误排查咨询
解决Azure DevOps API操作构建租约的401权限问题
首先,你遇到的401错误核心原因是PAT的权限范围不够——操作构建租约(获取、删除)需要的权限比你当前配置的更具体,下面是详细的解决步骤:
一、正确的PAT权限要求
你之前配置的Builds(读取/执行)权限不足以操作租约,租约属于构建保留策略的一部分,需要将PAT的Build权限设置为「Read & Manage」:
- 生成PAT时,在权限范围里找到「Build」选项,勾选「Read & Manage」(而不是只选Read/Execute)
- 如果是项目级PAT,确保它关联的是目标项目,并且没有过期
另外,你不需要Test Management的权限,租约操作完全属于Build模块的权限范畴。
二、验证请求格式(你的当前格式是正确的)
你的请求头和Base64编码方式完全符合Azure DevOps API要求,不需要调整:
- 用
:$token转Base64是正确的Basic认证格式 - Content-Type设置为
application/json也没问题
三、测试删除租约的脚本示例
如果你要删除租约,需要把请求方法改成Delete,示例脚本如下:
$token = "{你的PAT}" $url="https://{instance}/{collection}/{project}/_apis/build/retention/leases/{lease Id}?api-version=6.0-preview.1" $token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)")) $response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Delete -ContentType application/json
四、额外的项目级权限检查
如果重新生成PAT后还是报错,需要检查项目级的权限设置:
- 进入目标项目的「项目设置」→「权限」→「Builds」
- 找到PAT对应的用户(或你用来生成PAT的账号)
- 确保该账号被分配了「Manage build retention」的权限(这个权限是管理构建保留和租约的关键)
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

