【问题标题】:Can I grant permissions to a pipeline so it can read information for a different project in Azure Devops using the API?我可以授予管道权限,以便它可以使用 API 读取 Azure Devops 中不同项目的信息吗?
【发布时间】:2020-03-17 18:06:45
【问题描述】:

我正在尝试使用此 Azure DevOps API 调用:

GET https://dev.azure.com/{organization}/_apis/projects/{projectId}?api-version=5.1

记录了here,当我有它的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 方法继续工作。

【问题讨论】:

    标签: permissions azure-devops azure-devops-rest-api


    【解决方案1】:
    • 如何授予管道权限以授权此调用?

    假设你调用上面的rest api从项目A的管道中检索项目B的信息。

    您需要在项目B中授予项目A的构建服务帐户View project-level information。下面是详细步骤。

    1、进入项目B的项目设置(你要检索信息的项目)-->权限-->选择Build Administrator group(你也可以新建一个group)

    2、点击Build Administrator组的Members选项卡-->点击Add-->添加项目A的构建服务账号。

    项目A的构建服务账号是这样的:NameofProjectA构建服务(NameofOrganization) eg. ProjectA 构建服务(MyOrganization)

    可选:

    您也可以在项目 B 中创建一个新组,并将项目 A 的构建服务帐户添加到其成员中。并确保View project-level information 被允许

    【讨论】:

    • 谢谢李维。非常感谢您的快速回答。
    • 经过数小时的谷歌搜索,感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2018-11-12
    • 2017-09-14
    • 2017-09-03
    • 2020-04-10
    • 2018-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多