Azure devops 使用System.AccessToken创建服务端点

Azure devops 使用System.AccessToken创建服务端点,azure-devops,Azure Devops,目前,我们使用特定的用户名和PAT进行Azure DevOps REST API调用,但从维护和脆弱性的角度来看,这不是一个好的解决方案。我们想改用OAuth令牌 我们遇到的一个问题是试图从管道生成服务端点。我可以通过我们的Powershell脚本使用以下命令检查端点是否存在: Invoke-RestMethod -Uri https://xxx.visualstudio.com/projectname/_apis/serviceendpoint/endpoints?api-version=5.

目前,我们使用特定的用户名和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访问令牌是使用“Project Collection Build Service(xxx)”帐户而不是您的帐户创建的,因此您需要授予“Project Collection Build Service(xxx)”帐户权限来创建服务端点。

正如我在上一段中所说,我向项目集合生成服务用户授予了发布管道上的完全权限,但仍然遇到此问题。我没有在项目或组织级别修改用户权限,因此默认情况下用户权限是任意的。@fepiv您配置了哪个权限?根据您的描述,您在发布管道上配置了访问权限,而不是创建服务端点的权限。若要配置创建服务端点的权限,您需要将该帐户添加到服务端点创建者组。我花了一段时间才重新开始此操作。您是正确的,我需要将该用户添加到Endpoint Creator组。我今天使用了您建议的配置,它起了作用。谢谢你的帮助!是否仍然可以将托管的生成代理/服务帐户添加到端点create或administrators?我注意到,只有当有一个自定义池和代理添加到项目中,然后如果该池和代理添加到Endpoint Admin或Creator组中,托管代理才会获得一个OAuth令牌,该令牌将正常工作。一旦自定义代理“Project Collection Build Service(xxx)”被删除,那么托管代理将不再具有访问权限。我试图让管道支持通过REST在服务端点上执行查找-但是,我已经让它工作了;它需要一个自定义代理池/代理。添加“any”自定义代理后,托管代理或自定义代理将工作并获得适当的OAuth2令牌。但是,如果没有自定义代理,则无法将任何托管代理添加到权限。。。