如何默认禁用jenkins中的“CSRF保护”

如何默认禁用jenkins中的“CSRF保护”

我需要在 jenkins 中禁用 CSRF 保护,默认情况下启用该保护。问题是在容器化之后,当我启动一个包含 jenkins 的新容器时,它会抛出“没有有效的面包屑”错误。

我目前正在使用此 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 映像Dockerfile并运行该映像。在 中Dockerfile,您可以使用环境变量设置系统属性JAVA_OPTS

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

相关内容