permissions - 我可以授予管道权限,以便它可以使用 API 读取 Azure Devops 中不同项目的信息吗?
问题描述
我正在尝试使用此 Azure DevOps API 调用:
GET https://dev.azure.com/{organization}/_apis/projects/{projectId}?api-version=5.1
记录在这里,当我有它的 ID 时检索项目的名称。请注意,管道正在尝试检索项目的项目信息,而不是定义它的项目。下面是代码,当管道提供自己的项目 ID 时该代码有效:
$VstsBaseRestUrl = "$(System.TeamFoundationCollectionUri)"
$projectsUrl = "$VstsBaseRestUrl/_apis/projects/${{ parameters.project }}?api-version=5.1"
$rawResponse = Invoke-WebRequest -UseDefaultCredentials -Uri $projectsUrl -Method Get -ContentType "application/json" -Headers @{
Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}
响应返回为:
{"$id":"1","innerException":null,"message":"VS800075: The project with id 'vstfs:///Classification/TeamProject/xxxxx' does not exist, or you do not have permission to access it.","typeName":"Microsoft.TeamFoundation.Core.WebApi.ProjectDoesNotExistException, Microsoft.TeamFoundation.Core.WebApi","typeKey":"ProjectDoesNotExistException","errorCode":0,"eventId":3000}
我使用了正确的项目 ID,那么如何授予管道权限以授权此调用?
注意:如果不需要,我宁愿不使用 PAT,即以某种方式将其授予构建帐户,以便 SYSTEM_ACCESSTOKEN 方法继续工作。
解决方案
- 如何授予管道权限以授权此调用?
假设您调用上面的 rest api 从项目 A 的管道中检索项目 B 的信息。
您需要在项目B中授予项目A的构建服务帐户View project-level information
。以下是详细步骤。
1、进入项目B的项目设置(你要检索信息的项目)--> 权限-->选择构建管理员组(也可以新建组)
2、点击Build Administrator组的Members选项卡-->点击Add -->添加项目A的build service account。
项目A的构建服务账号是这样的: NameofProjectA Build Service (NameofOrganization) eg。ProjectA 构建服务 (MyOrganization)
选修的:
您还可以在项目 B 中创建一个新组,并将项目 A 的构建服务帐户添加到其成员中。并确保View project-level information
允许
推荐阅读
- javascript - 使用 macOS Automator 服务工作流程为在 Finder 中选择的“每个文件或文件夹”运行 JavaScript
- powershell - 使用 Powershell 启动带参数的程序以获得管理员权限
- android - 隐藏值后的中心图表 LineData MPAndroidChart
- angular-ui - 安全输入角度 ui 掩码
- memory - ram和rom大小如何取决于cpu?
- excel - 如何在“id”下获取html中的内部文本
- active-directory - 域控制器如何验证 AD 中域成员的凭据?
- maxima - 千里马如何重新安排条款?
- angular - Ng2-smart-table 不在 IE 中显示日期时间值
- c# - 在移动文件之前检查文件是否正在使用