如何以非管理员用户身份调用 JFrog Artifactory 用户插件

How to call an JFrog Artifactory user plugin as non-admin user

我正在编写我的第一个 Artifactory 用户插件,它应该可以通过 REST 调用。这是实现的一部分:

executions {

    repoInfo(httpMethod: 'GET') { params ->

    ....

我能以admin用户成功调用插件:

$ curl -u admin:XXX -X GET "http://localhost:8080/artifactory/api/plugins/execute/repoInfo"

但是当以另一个用户的身份调用它时,我在 return 中得到了 http return 代码 403:

curl -u test-user-1:XXX -X GET "http://localhost:8080/artifactory/api/plugins/execute/repoInfo"{  
    "errors" : [ {
    "status" : 403,
    "message" : "You are not permitted to execute 'repoInfo'."
   } 
   ]
}

我的问题是我需要为 test-user-1 分配什么权限才能访问我的插件?

提前感谢您的回答。

这在 docs:

中解释得有些不清楚
  /**
   * An execution definition.
   * The first value is a unique name for the execution.
   *
   * ...
   *
   * Plugin info annotation parameters:
   *  ...
   *  users (java.util.Set<java.lang.String>) - Users permitted to query this plugin for information or invoke it.
   *  groups (java.util.Set<java.lang.String>) - Groups permitted to query this plugin for information or invoke it.
   *
   * ...
   */

  myExecution(version:version, description:description, httpMethod: 'GET', users:[], groups:[], params:[:]) { params ->
  }

创建执行插件时可以传递许多可选参数,其中两个是 usersgroups。如果这些被省略或为空,则只有管理员用户可以执行插件。如果您希望非管理员用户执行插件,您需要将用户名添加到 users 列表或将组名添加到 groups 列表。例如:

executions {
    repoInfo(httpMethod: 'GET', users: ['tom', 'bill'], groups: ['dev-team']) { params ->
        // ...
    }
}

在这种情况下,可以使用此插件的人是 tombilldev-team 组中的任何人以及任何具有管理员权限的人。


有时让任何人都可以使用的插件是有意义的。为此,您通常会执行以下操作:

executions {
    publicRepoInfo(httpMethod: 'GET', groups: ['readers']) { params ->
        // ...
    }
}

Artifactory 安装了一个名为 readers 的预先存在的组,该组会自动添加到所有新用户并授予他们基本的读取权限,因此所有登录用户都应该是该组的一部分。所有未登录的用户都被视为作为特殊 anonymous 用户登录,该用户也是 readers 组的一部分。