Как отправить 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, и теперь он работает...

Надеюсь, это кому-то поможет.

Я столкнулся с той же проблемой. Ниже мое решение.

  1. Использование прокси Nginx за IAP и перед Jenkins
  2. Использование нового заголовка для Jenkins вместо "Авторизация". Для себя я использовал заголовок "Jenkins-Authorization".
  3. В конфигурации Nginx я использовал proxy_set_header, чтобы установить заголовок "Авторизация" из "Jenkins-Authorization".
  4. В конфигурации 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.
Другие вопросы по тегам