gpt4 book ai didi

azure - 如何使用 Rest API 管理 Azure DevOps 组权限

转载 作者:行者123 更新时间:2023-12-03 04:57:02 24 4
gpt4 key购买 nike

我正在执行一项自动化任务,需要一个组对存储库、管道和发布等拥有一组权限。我正在寻找一个可以管理该组权限的 Rest API。

例如:

在跨存储库策略中,如何使用 Rest API 管理/设置“项目管理员”组的权限,以允许“推送时绕过策略”、“推送时绕过策略”等。

enter image description here

提前谢谢您。

最佳答案

根据您的要求,您可以使用Rest API:Access Control Entries - Set Access Control Entries

POST https://dev.azure.com/{organization}/_apis/accesscontrolentries/{securityNamespaceId}?api-version=6.0

请求正文:

{
"token": "repoV2/{ProjectID}/{RepoID(If you want to set the permission for a single repo)}",
"merge": true,
"accessControlEntries": [
{
"descriptor": "Microsoft.TeamFoundation.Identity;S-....",
"allow": 32768,
"deny": 0,
"extendedinfo": {}
}
]
}

您可以通过以下方式获取Rest API中需要的参数值:

安全命名空间Id:

GET https://dev.azure.com/{OrganizationName}/_apis/securitynamespaces?api-version=6.0

在响应正文中:您可以搜索Git 存储库

然后就可以得到权限对应的namespaceid和Parameter值。

例如:

enter image description here

要获取组身份(S-...),没有直接的 Rest API 可以获取它。您可以使用以下方法来获取它:

1.获取描述符:

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

2.使用以下C#代码进行转换:

public static string Base64Decode(string base64EncodedData)
{
var lengthMod4 = base64EncodedData.Length % 4;
if (lengthMod4 != 0)
{
//fix Invalid length for a Base-64 char array or string
base64EncodedData += new string('=', 4 - lengthMod4);
}
var base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData);
return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
}

public static string Base64Encode(string plainText)
{
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
return System.Convert.ToBase64String(plainTextBytes);
}

这里有a blog由我们的Azure Identity团队工程师编写,您可以引用它以获取更详细的信息。

此外,您还可以直接通过浏览器F12记录获取所有参数的值。

enter image description here

关于azure - 如何使用 Rest API 管理 Azure DevOps 组权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66082125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com