Аутентификация не работает при попытке удалить артефакт (HttpResponseException: Forbidden)

Я пытаюсь удалить артефакты из репозитория Artifactory, используя сценарий Groovy, который выполняется в задаче Jenkins. Сценарий собирает все артефакты по указанному пути моего репозитория, которые соответствуют метке времени, а затем пытается удалить их из репозитория.

Интересная часть скрипта выглядит так:

def base.url = 'http://name:port'
def repo = 'my-repo'
def path = 'my-path'
def artifact = 'my-artifact'
def url.to.delete = base.url + '/artifactory/' + repo + '/' + path + '/' + artifact 
print "url.to.delete = " + url.to.delete

def server = new RESTClient(base.url)
server.auth.basic('user', 'password')   
def resp = server.delete(path: url.to.delete)

Оператор удаления вызывает это исключение

groovyx.net.http.HttpResponseException: Forbidden
    at groovyx.net.http.RESTClient.defaultFailureHandler(RESTClient.java:240)
    at groovyx.net.http.HTTPBuilder.doRequest(HTTPBuilder.java:508)
    at groovyx.net.http.RESTClient.delete(RESTClient.java:196)
    at groovyx.net.http.RESTClient$delete.call(Unknown Source)
    at Artifactory$_deleteartifactsWithTimestamps_closure2.doCall(hudson4086512083232103441.groovy:87)
    at Artifactory.deleteartifactsWithTimestamps(hudson4086512083232103441.groovy:80)
    at Artifactory$deleteartifactsWithTimestamps.callCurrent(Unknown Source)
    at Artifactory.deleteSnapshots(hudson4086512083232103441.groovy:32)
    at Artifactory$deleteSnapshots.call(Unknown Source)
    at hudson4086512083232103441.run(hudson4086512083232103441.groovy:170)

Вычисленный url.to.delete вроде правильный - если я скопирую его из лога и вставлю в адресное поле своего браузера, артефакт скачается без проблем. Доступ к Artifactory можно получить из скрипта Groovy — GET, который собирает артефакты пути, отлично работает, используя те же данные.

Я использую Artifactory 2.6.4 (бесплатная версия!), Groovy 2.1.1 с http-builder-0.6.jar.

Спасибо за вашу помощь!

откровенный


person Frank Winkler    schedule 26.02.2013    source источник
comment
что касается ответа Рика, я вошел в свою Artifactory, используя пользователя и пароль, используемые в сценарии, и без проблем удалил артефакт в пользовательском интерфейсе. Таким образом, разрешения пользователя хороши для удаления артефактов.   -  person Frank Winkler    schedule 27.02.2013
comment
Я только что просмотрел журнал, в котором нашел: [DENIED DELETE] repo:path/my-artifact.war для анонимного/... . Таким образом, кажется, что проблема не в разрешении, а в аутентификации. Что-то не так с аутентификацией, которую я использовал в своем скрипте: server.auth.basic('user', 'password')? Спасибо!   -  person Frank Winkler    schedule 27.02.2013


Ответы (2)


Вероятно, у вашего пользователя нет прав на удаление. Ваш ответ предполагает, что вызов клиента правильный.

person Rick Mangi    schedule 26.02.2013
comment
Спасибо за ответ. Я уверен, что у пользователя есть права администратора. Я использовал его для создания и удаления репозиториев. И я использовал имя пользователя и пароль (скопируйте и вставьте) для входа в Artifactory. - person Frank Winkler; 26.02.2013

Проблема была в том, что был включен "Разрешить анонимный доступ". После отключения этого параметра можно использовать обычную аутентификацию.

person Frank Winkler    schedule 13.03.2013