Jenkinsでデフォルトで「CSRF保護」を無効にする方法

Jenkinsでデフォルトで「CSRF保護」を無効にする方法

デフォルトでは、有効になっているJenkinsでCSRF保護を無効にする必要があります。問題は、コンテナ化後にジェンキンを含む新しいコンテナを起動すると、「有効な移動パスなし」エラーが発生することです。

現在、このcmdを使用してJenkinsアプリケーションを開いています。

/usr/bin/java  -server -Djava.net.preferIPv4Stack=true -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration=false  -jar /usr/share/jenkins/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=9090 --ajp13Port=-1

答え1

CSRFを無効にするには、Groovyを使用して「Jenkinsの管理」/「スクリプトコンソール」を開きます。

import jenkins.model.Jenkins
def instance = Jenkins.instance
instance.setCrumbIssuer(null)

源泉:https://stackoverflow.com/a/57869141

答え2

私はちょうど追加

-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true 

したがって、完全なコマンドは次のようになります。

docker run  --restart=always --name jenkins --add-host="xxxx:xx" --add-host="updates.jenkins-ci.org:7.223.199.227" --add-host="updates.jenkins.org:7.223.199.227"  -u root  -d -p 8080:8080 -p 50000:50000  -v /root/jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock   -e JAVA_OPTS="-Duser.timezone=Asia/Shanghai -Dhudson.model.DownloadService.noSignatureCheck=true -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true"  docker.io/jenkins/jenkins:lts

ここに画像の説明を入力してください。

答え3

「クロスサイトリクエスト偽造防止」パラメータの選択を解除した後、@hoeflingに追加されました。救う。

「Jenkinsの管理」に移動し、「ディスクから構成を再ロードする」をクリックします。

答え4

ユースケースについては100%確信できませんが、常にDockerを使用して新しいDockerイメージを作成し、Dockerfileそのイメージを実行するオプションがあります。では、Dockerfile環境変数を使用してシステムプロパティを設定できますJAVA_OPTS

FROM jenkins/jenkins:latest
ENV JAVA_OPTS -Djava.net.preferIPv4Stack=true -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration=false

関連情報