如何使用REST修改Azure DevOps ServiceConnection角色?
这是对应的UI

我想在“用户”角色中添加一个团队。
我一直在看
这个方向对吗?
发布于 2019-12-11 11:32:02
您可以使用下面的api更新服务连接的安全性。
Put https://dev.azure.com/<Org>/_apis/securityroles/scopes/distributedtask.serviceendpointrole/roleassignments/resources/<resourcesId>?api-version=5.1-preview.1"API没有文档化。但是,当您F12浏览器时,您可以找到它。
您可以从resourceId页面中的请求url获取F12。

也可以从服务连接 UI页面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上面的脚本将用户分配给服务连接的用户角色权限。
您可以从F12页面中的请求体获取用户id。但是,您可能仍然需要将下面的rest用于获取用户id。
GET https://vssps.dev.azure.com/{organization}/_apis/graph/users/{userDescriptor}?api-version=5.1-preview.1您可以从userDescriptor权限页面的UI页面中为每个用户获取URL。

发布于 2019-12-11 15:03:52
小心那个网址..。这包含了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来自属性的UserId : originId
https://vssps.dev.azure.com/$OrganizatioName/_apis/graph/groups?api-version=5.1-preview.1ServiceEndpointId来自
https://dev.azure.com/$OrganizatioName/$ProjectId/_apis/serviceendpoint/endpoints?api-version=5.1-preview.2https://stackoverflow.com/questions/59281661
复制相似问题