如何为System.AccessToken授予仪表板管理权限以通过Azure DevOps REST API更新部件
Azure DevOps构建管道调用Widgets - Update API权限问题解决
需要授予的权限
- 必须为
<project-name> Build Service (<org-name>)服务主体授予仪表板资源的Manage权限,这是Widgets - Update端点的必填权限(Widgets - Get仅需读取权限,因此之前能正常调用)
权限配置步骤
网页界面配置
- 打开目标项目,点击左下角项目设置(齿轮图标)
- 在左侧导航栏依次进入仪表板 → 权限
- 在权限列表中找到
<project-name> Build Service (<org-name>)账户,若未显示则点击右上角「添加用户/组」搜索添加 - 找到Manage dashboards权限项,勾选「允许」
- 保存设置
自动化配置(PowerShell调用REST API)
若需批量或自动化配置,可调用Dashboards - Update Dashboard Permissions端点,示例代码:
$orgUrl = "https://dev.azure.com/你的组织名" $projectName = "你的项目名" $dashboardId = "目标仪表板ID" $token = "$(System.AccessToken)" $headers = @{ Authorization = "Bearer $token" "Content-Type" = "application/json" } # 替换为构建服务主体的descriptor,可通过Identity API获取 $buildServiceDescriptor = "Microsoft.TeamFoundation.Identity;S-1-9-1551374245-..." $body = @{ accessControlEntries = @( @{ descriptor = $buildServiceDescriptor allow = 2 # 对应Manage权限的权限值 deny = 0 merge = $true } ) } | ConvertTo-Json -Depth 10 Invoke-RestMethod -Uri "$orgUrl/$projectName/_apis/dashboard/dashboards/$dashboardId/permissions?api-version=7.1-preview.3" -Method Patch -Headers $headers -Body $body
验证
重新运行构建管道,检查Widgets - Update端点调用是否正常;也可手动调用该端点测试权限是否生效
内容的提问来源于stack exchange,提问作者caganeraydin
相关产品推荐
相关产品推荐

