Как отправить POST Дженкинсу, чтобы создать работу с основными заголовками аутентификации?
Я пытаюсь настроить известный инструмент управления инцидентами для выполнения запроса POST на URL-адрес сборки проекта Jenkins для ответа на некоторые предупреждения.
В этом инструменте по какой-то причине я не могу поместить конечную точку сборки задания Jenkins следующим образом:
https://<user>:<apiToken>@my-jenkins.com/blabla/job/blabla/build?token=<myTokenName>
Таким образом, единственная альтернатива, которую предоставляет инструмент - это поместить данные авторизации в качестве заголовка.
Прежде чем сделать это, я пытаюсь проверить, будет ли это работать, используяcurl
, По этой причине я вызываю URL Jenkins с базовым заголовком auth со следующим curl
команда:
curl -X POST -H 'Authorization:Basic <user:apiToken in base64>' -H 'Jenkins-Crumb:<my-crumb>' 'https://my-jenkins.com/blabla/job/blabla/build?token=<myTokenName>'
Но дает мне 401: Не авторизован (Неверный пароль / токен для пользователя: my-user). Если я помещу в URL те же учетные данные, что и в первом фрагменте кода, это сработает.
Я прочитал следующие документы: https://wiki.jenkins.io/display/JENKINS/Authenticating+scripted+clients и кажется, что установка заголовка Basic auth довольно проста, но я думаю, что я что-то здесь упускаю, потому что не работает для меня, когда я использую curl
,
Также я немного погуглил, и кажется, что все называют URL сборки Дженкинса с помощью user:apiToken
в URL, но, как я уже говорил, инструмент не позволяет размещать такие URL-адреса.
Кто-нибудь выполнил запуск задания Jenkins с базовым заголовком авторизации?
Любая помощь будет оценена. Большое спасибо!
1 ответ
Хорошо... Довольно неловко, но кажется, что я генерировал строку base64 с моей оболочкой командной строки macOS, но она не работала.
Я сделал то же самое с Postman, чтобы сгенерировать заголовок auth, и теперь он работает...
Надеюсь, это кому-то поможет.
Я столкнулся с той же проблемой. Ниже мое решение.
- Использование прокси Nginx за IAP и перед Jenkins
- Использование нового заголовка для Jenkins вместо "Авторизация". Для себя я использовал заголовок "Jenkins-Authorization".
- В конфигурации Nginx я использовал proxy_set_header, чтобы установить заголовок "Авторизация" из "Jenkins-Authorization".
- В конфигурации Nginx proxy_pass к вышестоящему серверу Jenkins с использованием внутреннего IP-адреса
Конфигурация Nginx:
upstream app {
server jenkin_internal_ip:8080;
}
server {
listen 80 default_server;
charset utf-8;
location / {
include proxy_params;
proxy_set_header Authorization $http_jenkins_authorization;
proxy_pass http://app;
proxy_redirect off;
}
}
- не забудьте заменить "jenkin_internal_ip" в конфигурации Nginx в качестве внутреннего IP-адреса Jenkins.