Как вызвать плагин JFrog Artifactory как пользователь без прав администратора - PullRequest
0 голосов
/ 17 января 2019

Я пишу свой первый пользовательский плагин 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 голосов
/ 17 января 2019

Это несколько непонятно объясняется в документах :

  /**
   * 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.

...