Спинакер: 403 В запрос не было включено ни одной крохи

Я настроил jenkins в спинакеру следующим образом и установил трубопровод спинакера.

 jenkins:
    # If you are integrating Jenkins, set its location here using the baseUrl
    # field and provide the username/password credentials.
    # You must also enable the "igor" service listed separately.
    #
    # If you have multiple jenkins servers, you will need to list
    # them in an igor-local.yml. See jenkins.masters in config/igor.yml.
    #
    # Note that jenkins is not installed with Spinnaker so you must obtain this
    # on your own if you are interested.
    enabled: ${services.igor.enabled:false}
    defaultMaster:
      name: default
      baseUrl: http://server:8080
      username: spinnaker
      password: password

Но при попытке запустить конвейер спинакера я вижу следующую ошибку.

Exception ( Start Jenkins Job ) 403 No valid crumb was included in the request

Ответ 1

Чтобы устранить эту проблему, я снял флажок "Предотвратить подделки Cross Site Request Forgery" в разделе jenkins.com/configureSecurity и начал работать.

Предотвратить подделки подпрограмм подпрограммы

Ответ 2

Наконец, этот пост помог мне избавиться от проблемы крошки, но все же обезопасил Дженкинса от атаки CSRF.

Решение для недействительной крошки, включенное в запрос о выдаче

По сути, нам нужно сначала запросить crumb с аутентификацией, а затем снова выполнить вызовы POST api с crumb в качестве заголовка вместе с аутентификацией.

Вот как я это сделал,

curl -v -X GET http://jenkins-url:8080/crumbIssuer/api/json --user <username>:<password>

Ответ был,

{
"_class":"hudson.security.csrf.DefaultCrumbIssuer",
"crumb":"0db38413bd7ec9e98974f5213f7ead8b",
"crumbRequestField":"Jenkins-Crumb"
}

Тогда API-интерфейс POST с приведенной выше информацией о крошке.

curl -X POST http://jenkins-url:8080/job/<job-name>/build --user <username>:<password> -H 'Jenkins-Crumb: 0db38413bd7ec9e98974f5213f7ead8b'

Ответ 3

Крошка - не что иное, как маркер доступа. Ниже API, чтобы получить крошку

https://jenkins.xxx.xxx.xxx/crumbIssuer/api/json//замените его своим URL-адресом jenkins и сделайте GET-вызов в вашем почтальоне или вызывающей программе rest-api.

Это сгенерирует вывод как:

{
    "_class": "hudson.security.csrf.DefaultCrumbIssuer",
    "crumb": "ba4742b9d92606f4236456568a",
    "crumbRequestField": "Jenkins-Crumb"
}

Ниже приведена более подробная информация и ссылка, связанная с тем же: Как запросить Crumb для издателя jenkins Jenkins на вики-странице: https://wiki.jenkins-ci.org/display/jenkins/remote+access+api

Если вы звоните так же через rest-api call, посмотрите ссылку ниже, где объясняется, как вызвать rest rest с помощью jenkins-crumb

https://blog.dahanne.net/2016/05/17/how-to-update-a-jenkins-job-posting-config-xml/

Пример:

curl -X POST http://anthony:[email protected]:8080/jenkins/job/pof/config.xml --data-binary "@config.xml" -data ".crumb=6bbabc426436b72ec35e5ad4a4344687"

Ответ 4

  Это решение БЕЗОПАСНО для использования

возникла эта проблема, когда мы изменили jenkins, чтобы они были доступны через обратный прокси-сервер.

В "Настройка глобальной безопасности" есть опция "Включить совместимость прокси-серверов".  Это помогло с моей проблемой.

enter image description here

Ответ 5

Перейдите в Manage Jenkins => Настройте глобальную безопасность.

Затем снимите флажок "Предотвращать подделку межсайтовых запросов"

Ответ 6

У меня была эта проблема с моим Jenkins, установленным на экземпляре AWS EC2. Эта проблема исчезла, как только я открылся миру (разумеется, я имею в виду "Группы безопасности"), порты: 80, 8080 (порт jenkins по умолчанию) и 443. Я знаю, что это может быть чувствительно к кому-то, но это не так я, я сделал это, и проблема ушла!

... конечно, это может быть то же самое для GCP, Azure и других облачных сервисов