У меня возникла проблема с запуском сборки в Jenkins с включенной аутентификацией и вопросом, есть ли у кого-нибудь идеи.
У меня есть глобальная безопасность, настроенная для использования LDAP с "Стратегией авторизации на основе проектов". У пользователя "Анонимный пользователь" есть привилегия "Работa > Сборка", и никакие другие привилегии (в частности, у "Анонимного пользователя" НЕ есть "Общий > Чтение" ), так как я не хочу, чтобы все могли просматривать список рабочих мест и другую общую информацию).
Я хочу, чтобы автоматизированный script мог запускать сборку с помощью функции "Триггер сборки удаленно", где я указываю значение ?token=[token]
в URL-адресе, и стандартная проверка подлинности должна быть обойдена, пока [token]
соответствует той, которую я установил на странице "Настроить работу". Цель состоит в том, чтобы НЕ нужно предоставлять регулярное имя пользователя/пароль в запросе, но просто предоставить токен для этого конкретного задания.
Документация, похоже, указывает, что это должно работать:
https://wiki.jenkins-ci.org/display/JENKINS/Quick+and+Simple+Security
В частности, я ожидаю, что этот HTTP-запрос будет работать:
curl -i https://jenkinsHost/job/ProjectName/build?token=test
Но я получаю:
[~]$ curl -i https://jenkinsHost/job/ProjectName/build?token=test
HTTP/1.1 403 Forbidden
Date: Sat, 27 Apr 2013 23:17:03 GMT
Server: Winstone Servlet Engine v0.9.10
Content-Type: text/html;charset=UTF-8
Content-Length: 629
X-Powered-By: Servlet/2.5 (Winstone/0.9.10)
Set-Cookie: JSESSIONID.e9bc4765=e1f0a30b9f04b3740bae527a7822b2d5; Path=/; HttpOnly
Connection: close
<html><head><meta http-equiv='refresh' content='1;url=/login?from=%2Fjob%2FProjectName%2Fbuild%3Ftoken%3Dtest'/>
<script>
window.location.replace('/login?from=%2Fjob%2FProjectName%2Fbuild%3Ftoken%3Dtest');</script>
</head>
<body style='background-color:white; color:white;'>
Authentication required
</body></html>
Когда я использую API-аутентификацию, запрос работает:
curl --username "test_user:API_KEY" https://hostname/job/ProjectName/build?token=test
Но опять же, согласно документации, я думаю, что она должна обходить глобальную аутентификацию, если присутствует токен, и соответствует токенам проекта, которые я настраиваю. Почему это не работает? Какие еще данные/журналы можно предоставить?