当“通过UI”和“通过REST API”创建Azure工件提要时,提要权限设置为什么会有区别?

时间:2020-08-30 16:52:29

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

使用REST API:

我使用了以下文档:https://docs.microsoft.com/en-us/rest/api/azure/devops/artifacts/feed%20%20management/create%20feed?view=azure-devops-rest-5.0#feedpermission 使用REST API创建项目范围提要

并提及 Create Azure Artifacts universal package feed via Azure API - Example

Feed是具有以下权限的

  1. USER-所有者
  2. [myorg] \项目集合管理员-所有者(继承)
  3. [myorg] \ Project集合有效用户-读者(继承)

通过用户界面:

通过用户界面创建Feed时,将设置以下权限:

  1. USER-所有者
  2. [myorg] \项目集合管理员-所有者(继承)
  3. 项目集合构建服务(myorg)-贡献者
  4. [myproject] \项目管理员-所有者
  5. [myproject] \贡献者-贡献者
  6. [myproject]构建服务(myorg)-贡献者

与通过UI手动创建的提要相比,仅通过REST API创建的提要仅向有限的用户/组提供权限。 为什么有区别?

1 个答案:

答案 0 :(得分:0)

Azure时为什么Feed权限设置有所不同 工件提要是通过“ UI”和“ REST API”创建的?

差异取决于我们如何编写Request Body。我的请求正文here仅使用了三个元素,因此该请求仅创建了一个具有名称和默认权限的简单提要。

如果您要创建具有与UI相同权限的提要,则还应指定 Permissions 元素,如下所示:

{
    "name": "Test12345",
    "hideDeletedPackageVersions": true,
    "permissions": [
        {
            "identityDescriptor": "Microsoft.TeamFoundation.ServiceIdentity;xxxxxxxxxx",
            "role": 3
        },
        {
            "identityDescriptor": "Microsoft.TeamFoundation.ServiceIdentity;xxxxxxxxxx",
            "role": 3
        },
        {
            "identityDescriptor": "Microsoft.TeamFoundation.Identity;xxxxxxxxxx",
            "role": 4
        },
        {
            "identityDescriptor": "Microsoft.TeamFoundation.Identity;xxxxxxxxxxx",
            "role": 3
        }
    ]
}

通过在请求正文中定义permissions元素,当您通过UI进行操作时,可以使用API​​创建具有相同权限的新供稿。

此外:

关于如何查找这些权限的ID(上面的体内xxxxxxxx),可以在F12模式下使用Edge浏览器(或其他浏览器)来获取您的相应ID。对我来说:

1。通过UI创建供稿时导航至页面:

enter image description here

2。在Edge中,单击F12并清除以前的请求:

enter image description here

3。单击Create按钮,然后在F12窗口中检查请求:

enter image description here

4。找到上面的请求并检查其主体,我们可以轻松找到ID列表:

enter image description here

enter image description here

在组织中找到代表相应权限的ID后,您可以轻松创建具有权限的供稿。