我正在编写我的第一个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才能访问我的插件?
预先感谢您的回答。
答案 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 ->
}
创建执行插件时可以传递许多可选参数,其中两个是users
和groups
。如果省略或为空,则只有管理员用户才能执行插件。如果要让非管理员用户执行插件,则需要将用户名添加到users
列表中,或将组名添加到groups
列表中。例如:
executions {
repoInfo(httpMethod: 'GET', users: ['tom', 'bill'], groups: ['dev-team']) { params ->
// ...
}
}
在这种情况下,tom
,bill
,dev-team
组中的任何人以及具有管理员权限的人都是可以使用此插件的人。
有时候,使任何人和所有人都可以使用一个插件是有意义的。为此,通常需要执行以下操作:
executions {
publicRepoInfo(httpMethod: 'GET', groups: ['readers']) { params ->
// ...
}
}
Artifactory会安装一个名为readers
的预先存在的组,该组会自动添加到所有新用户并为他们提供基本的读取访问权限,因此所有登录用户都应属于该组。所有未登录的用户都被视为以特殊的anonymous
用户身份登录,该用户也是readers
组的一部分。