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

时间:2019-01-17 15:15:31

标签: plugins permissions artifactory http-status-code-403

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

executions {

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

    ....

我可以以管理员用户身份成功调用插件:

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

但是当以另一个用户的身份调用它时,我得到http返回码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才能访问我的插件?

预先感谢您的回答。

1 个答案:

答案 0 :(得分: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组的一部分。