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

问题描述

使用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创建的提要仅向有限的用户/组提供权限。 为什么有区别?

解决方法

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",{
            "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后,您可以轻松创建具有权限的供稿。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...