Azure DevOps ServiceConnection 角色休息 API

Azure DevOps ServiceConnection Roles Rest API

如何使用 REST API 修改 Azure DevOps ServiceConnection 角色?

这是对应的UI

我想在 'User' 角色中添加一个团队。

我一直在看

这个方向对吗?

您可以使用下面的 api 更新服务连接的安全性。

Put https://dev.azure.com/<Org>/_apis/securityroles/scopes/distributedtask.serviceendpointrole/roleassignments/resources/<resourcesId>?api-version=5.1-preview.1"

API 未记录。但是当你 F12 浏览器时你可以找到它。

F12页面的请求url可以获取到resourceId。

还有来自 服务连接 UI 页面的 URL url 以及

以下是 powershell 脚本中的示例:

$url="https://dev.azure.com/<org>/_apis/securityroles/scopes/distributedtask.serviceendpointrole/roleassignments/resources/......c5_d69e94f6-9c07-4341-bd6f-8b28e05d4b08?api-version=5.1-preview.1"

$connectionToken ="Personal Access token"

$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))

$body ='[{"roleName":"User","userId":"....a313-31d7848bcdcc"}]'

Invoke-RestMethod -Uri $url -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method put  -ContentType "application/json" -Body $body

以上脚本将用户分配给服务连接的 User 角色权限。

您可以在F12页面的请求体中获取用户id。但是您可能仍然需要使用下面的 rest api 到 get the user id

GET https://vssps.dev.azure.com/{organization}/_apis/graph/users/{userDescriptor}?api-version=5.1-preview.1

您可以从每个用户的 Permission 页面的 UI 页面中的 URL 获取 userDescriptor。

注意 url... 这包含 ProjectId_ServiceEndpointId

$url="https://dev.azure.com/$OrganizationName/_apis/securityroles/scopes/distributedtask.serviceendpointrole/roleassignments/resources/$($ProjectId)_$($ServiceEndpointId)?api-version=5.1-preview.1"

ProjectId 来自

https://dev.azure.com/$OrganizatioName/_apis/projects?api-version=5.1

用户 ID 来自 [属性: originId]

https://vssps.dev.azure.com/$OrganizatioName/_apis/graph/groups?api-version=5.1-preview.1

ServiceEndpointId 来自

https://dev.azure.com/$OrganizatioName/$ProjectId/_apis/serviceendpoint/endpoints?api-version=5.1-preview.2