web-dev-qa-db-ja.com

Spinnaker:403有効なパン粉はリクエストに含まれていません

スピンネーカーでジェンキンを次のように設定し、スピンネーカーパイプラインを設定しました。

_ 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

18
Balkrishna

この問題を解決するために、jenkins.com/configureSecurityセクションで「クロスサイトリクエストフォージェリのエクスプロイトを防止する」のチェックを外して、動作を開始しました。

Prevent Cross Site Request Forgery exploits

28
Balkrishna

最後に、この投稿は、パンくずの問題をなくすのに役立ちましたが、それでもジェンキンスをCSRF攻撃から保護しています。

リクエストの問題に含まれる無効なパン粉の解決策

基本的に、最初に認証を使用してクラムを要求し、次に認証とともにヘッダーとしてクラムを使用してPOST api呼び出しを発行する必要があります。

これは私がやった方法です、

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

応答は、

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

次に、POST apiに上記のクラム情報が含まれます。

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

Crumbはアクセストークンに他なりません。以下は、パンくずを取得するためのAPIです。

https://jenkins.xxx.xxx.xxx/crumbIssuer/api/json// jenkinsのURLに置き換えて、郵便配達員またはrest-apiの呼び出し元でGET呼び出しを行います。

これにより、次のような出力が生成されます。

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

以下に詳細とリンクがあります: ジェンキンスのクラム発行者へのリクエスト方法 ジェンキンスwikiページ: https://wiki.jenkins-ci .org/display/jenkins/remote + access + api

Rest-api呼び出しを介して同じを呼び出している場合は、以下のリンクを確認してください。jenkins-crumbを使用して残りの呼び出しを呼び出す方法が説明されています。

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

例:

curl -X POST http://anthony:anthony@localhost:8080/jenkins/job/pof/config.xml --data-binary "@config.xml" -data ".crumb=6bbabc426436b72ec35e5ad4a4344687"
13
anshul Gupta

このソリューションは安全に使用できます

ジェンキンをリバースプロキシ経由でアクセスできるように変更したときに、この問題が発生しました。

Configure Global Security」には「プロキシ互換性を有効にする」これは私の問題の助けになりました。

enter image description here

6
sachin_ur

Jenkinsの管理=>グローバルセキュリティの構成に進みます。

次に、「クロスサイトリクエストフォージェリエクスプロイトの防止」のチェックを外します