使用 System.AccessToken 创建服务终结点



目前,我们使用特定的用户名和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

看起来调用此内容的用户无权创建资源(或至少没有服务终结点(的权限。我是运行发布的人,但我不相信这是我的访问权限,因为我是整个组织的管理员,几乎可以做任何事情。我还修改了内置项目集合生成服务用户对发布管道的访问权限,使其具有完全访问权限,但仍会遇到问题。我想要实现的目标是不可能的吗?

OAuth 访问令牌是使用"项目集合生成服务(xxx("帐户创建的,而不是你的帐户,因此需要授予"项目集合生成服务(xxx("帐户创建服务终结点的权限。

最新更新