VSTS:使用System.AccessToken创建服务端点

时间:2018-10-05 19:47:46

标签: azure-devops

当前,我们使用特定的用户名和PAT进行Azure DevOps REST API调用,但是从维护和脆弱性的角度来看,这不是一个好的解决方案。我们想改用OAuth令牌。

我们遇到问题的一种情况是尝试从管道中生成服务端点。我可以使用以下方法通过Powershell脚本检查端点是否存在:

Invoke-RestMethod -Uri https://xxx.visualstudio.com/projectname/_apis/serviceendpoint/endpoints?api-version=5.0-preview.2 -Method Get -ContentType "application/json" -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"} -Verbose -Debug

不幸的是,当我尝试使用以下命令创建不存在的端点时,我得到了403(禁止访问)。这是电话:

Invoke-RestMethod -Uri https://xxx.visualstudio.com/projectname/_apis/serviceendpoint/endpoints?api-version=5.0-preview.2 -Method Post -ContentType "application/json" -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"} -Body $RequestBody -Verbose -Debug

好像调用此命令的用户没有创建资源的权限(或至少没有服务端点)。我是运行该版本的人,但我不相信这是我的访问权限,因为我是整个组织的管理员,几乎可以做任何事情。我还修改了发布管道上内置的Project Collection Build Service用户的访问权限,使其具有完全访问权限并仍然可以解决问题。我试图达到的目标是不可能的吗?

1 个答案:

答案 0 :(得分:2)

OAuth访问令牌是使用“项目集合构建服务(xxx)”帐户而非您的帐户创建的,因此您需要授予“项目集合构建服务(xxx)”帐户的权限才能创建服务端点。