1. ホーム
  2. jenkins

[解決済み】Jenkins:403 リクエストに有効なクラムが含まれていません。

2022-02-02 08:50:44

質問

Spinnakerでjenkinsを以下のように設定し、spinnaker pipelineを設定しました。

 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

しかし、spinnakerパイプラインを実行しようとすると、以下のエラーが表示されます。

例外 ( Jenkinsジョブの開始 ) 403 リクエストに有効なパン粉が含まれていません。

解決方法は?

最後に、この投稿は、CSRF攻撃からJenkinsを保護しつつ、クラムの問題を取り除くのに役立ちました。

リクエストに含まれる有効なクラムがない場合の解決策

基本的には、まず認証付きでcrumbをリクエストし、その後再び認証と共にcrumbをヘッダーに持つ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'