如何使用 Rest 管理 Azure DevOps 组权限 API
How to manage Azure DevOps group permissions using Rest API
我正在处理一项自动化任务,我需要一个组对 Repos、Pipelines 和 Releases 等拥有一组权限。我正在寻找可以管理该组的权限。
例如:
在 Cross repo 策略中,我如何 manage/set 组“PROJECT ADMINISTRATORS”的权限以允许“推送时绕过策略”、“推送时绕过策略”等使用 Rest API.
提前致谢。
根据您的要求,您可以使用 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": {}
}
]
}
您可以通过以下方法获取RestAPI中需要的参数值:
securityNamespaceId:
GET https://dev.azure.com/{OrganizationName}/_apis/securitynamespaces?api-version=6.0
在响应正文中:您可以搜索 Git 存储库。
然后就可以得到权限对应的namespaceid和参数值
例如:
获取Group Identity(S-...),没有直接RestAPI获取。您使用以下方法获取它:
1.Get描述符:
GET https://vssps.dev.azure.com/{org name}/_apis/graph/users?api-version=5.1-preview.1
2.Using 下面的 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 Team工程师写的,你可以参考它了解更多详细信息。
另外,您也可以通过浏览器F12记录直接获取所有参数的值
我正在处理一项自动化任务,我需要一个组对 Repos、Pipelines 和 Releases 等拥有一组权限。我正在寻找可以管理该组的权限。
例如:
在 Cross repo 策略中,我如何 manage/set 组“PROJECT ADMINISTRATORS”的权限以允许“推送时绕过策略”、“推送时绕过策略”等使用 Rest API.
提前致谢。
根据您的要求,您可以使用 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": {}
}
]
}
您可以通过以下方法获取RestAPI中需要的参数值:
securityNamespaceId:
GET https://dev.azure.com/{OrganizationName}/_apis/securitynamespaces?api-version=6.0
在响应正文中:您可以搜索 Git 存储库。
然后就可以得到权限对应的namespaceid和参数值
例如:
获取Group Identity(S-...),没有直接RestAPI获取。您使用以下方法获取它:
1.Get描述符:
GET https://vssps.dev.azure.com/{org name}/_apis/graph/users?api-version=5.1-preview.1
2.Using 下面的 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 Team工程师写的,你可以参考它了解更多详细信息。
另外,您也可以通过浏览器F12记录直接获取所有参数的值