JenkinsでAPIジョブを使用して作成したいが、JenkinsのCSRF保護のための接続ができない。私はクラムを持っていますが、JSONまたはJavaScriptのurl/requestにPOSTメソッドでデータを渡す方法を教えてください。何か案は? JAVAを使わずにJSだけで作ろうと思っています。ありがとうJSON/JS経由でJenkinsのCSRFにcrumbを追加する方法
1
A
答えて
1
十分に簡単であるはずです。 JenkinsでCSRFを成功させるためには、あなたが期待していることはほとんどありません。
#1
有効で、実際のCSRFクラムを取得し、そのためにあなたが "/crumbIssuer" エンドポイントを使用する必要があります。 AFAIKの場合、これは保護されたエンドポイントであるため、要求内のAPIトークンまたは資格情報を使用して認証された呼び出しを行う必要があります。ここで私はJavaScriptでそれをどのように行うのでしょう:
// **** - is a placeholder for an auth token, replace it with yours
$.get({
url: "https://my.jenkins.io/crumbIssuer/api/json",
contentType: "application/json",
headers: {
"User-Agent": "my_js_script",
"Authorization": "****"
}
}).done(function(data) {
// this is how you fetch valid & actual CSRF crumb
console.log(data.crumbRequestField + " = " + data.crumb);
});
#2
さて、あなたは有効な&実際CSRFクラムのハンドルを持っているので、状態を変更するすべての要求でそれを送信しますジェンキンスで貸し付けは、あなたの有効なCSRFクラムJSONは次のようなものになります。
{ "crumbRequestField": "Jenkins-Crumb", "crumb": "noop" }
を、したがって、あなたのAjaxの呼び出しは、多少、この(余分な「ジェンキンス・クラム」HTTPヘッダーに注意してください)のようになります。
// **** - is a placeholder for an auth token, replace it with yours
// simply activates a job in Jenkins, requirement for cloned jobs (aka. "Create-A-Copy-From")
$.post({
url: "https://my.jenkins.io/job/my_job/description",
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
headers: {
"User-Agent": "my_js_script",
"Authorization": "****",
"Jenkins-Crumb": "noop" // makes CSRF filter in Jenkins happy
},
data: "description="
});
これらのJavaScriptスニペットは完璧ではありませんが、うまくいけば正しい方向を示します。
私はJenkins APIライブラリですが、Rubyのプロジェクトで作業しています。 ;
- jenkins-api/lib/jenkins/connection.rb(「クラム方法を参照):ここではあなたが実際にあなたが探しているものありませんいくつかのソースコードを読むために必要がある場合に興味があるかもしれないファイルをいくつか紹介します"activate_job"メソッド);
関連する問題
- 1. jenkinsのCrumb発行者のリクエスト方法
- 2. python-jenkins経由でjenkinsのビューに新しいジョブを追加するには?
- 3. Button経由でJTableにレコードを追加する方法は?
- 4. CloudFormation経由でALBにAWS WAFを追加する方法
- 5. titanのグラフをcassandra経由で追加する方法
- 6. API経由でOneDriveフォトタグを取得/追加する方法は?
- 7. スウィフトメーラー経由でヘッダーを追加する方法
- 8. XSDファイル経由でXmlAdapterクラスを追加する方法
- 9. DjangoでAjax経由でHttpResponseと追加データを渡す方法
- 10. ListBoxスレッドセーフ(拡張メソッド経由)に追加する方法
- 11. post.jar経由でドキュメントを追加する
- 12. Python:Tkinter経由でボタンを追加する
- 13. JGit経由でリモートを追加する
- 14. FormDataと共にAntiForgeryToken(CSRF)をjquery ajax経由で送信する方法
- 15. Symfony3でAJAXコールにCSRF保護を追加する方法は?
- 16. Jenkins - 追加フォルダをサブフォルダに追加する方法。画像
- 17. ランチャーREST API経由でスタックにサービスするコンテナを追加する方法
- 18. OJASP CSRF ProtectorをAJAX経由のPOSTリクエストに使用する方法は?
- 19. Python Numpy経由で追加する
- 20. Magento:カスタムモジュールのブロックにコード経由でリンクを追加する方法は?
- 21. Laravel 5.3のAuthコントローラ経由でユーザーテーブルにユーザーを追加する方法
- 22. Jenkins Pipeline経由でブランチをマージする
- 23. Jenkins経由でAzureを監視する
- 24. フックまたはapi経由でwhmcsでカートにドメインを追加する方法
- 25. jenkinsジョブステータス(カール経由)
- 26. Twigでスクリプト経由でリンクするパスを追加する方法は?
- 27. JQuery経由で無効な要素にアクションを追加する方法は?
- 28. Ecto Repositoryにターミナル経由でレコードを追加する方法は? (iex)
- 29. 休憩API経由でjira問題にフラグを追加する方法
- 30. setAsync経由でOutlookコンポーザー本体にbrタグを追加する方法は?
認証トークンの生成方法は? –