【问题标题】:How to manage Azure DevOps group permissions using Rest API如何使用 Rest API 管理 Azure DevOps 组权限
【发布时间】:2021-02-06 21:22:29
【问题描述】:

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

例如:

在 Cross repo 策略中,如何使用 Rest API 管理/设置组“PROJECT ADMINISTRATORS”的权限以允许“推送时绕过策略”、“推送时绕过策略”等。

在此先感谢您。

【问题讨论】:

  • 您可以使用 fiddler 来捕获大部分 REST API 调用。
  • 你看过 REST API 文档了吗?
  • 嗨@irudne。这张票有更新吗?如果答案能给你一些帮助,请随时告诉我。只是提醒this

标签: azure rest azure-devops azure-devops-rest-api


【解决方案1】:

根据您的要求,您可以使用 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中需要的参数值:

securityNamespaceId:

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

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

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

例如:

要获取 Group Identity(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 身份团队工程师编写,您可以参考它以获取更多详细信息。

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

【讨论】:

    猜你喜欢
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多