jenkins - 如何使用脚本禁用 Jenkins CSRF?

标签 jenkins groovy

我在以自动方式禁用 CSRF 保护时遇到问题。我想在 Jenkins Master 启动之前使用 groovy init 脚本或仅在属性文件中禁用。我不确定为什么我会遇到面包屑问题,我认为这与 K8S/AWS 中暴露的 LB 有关。我正在使用 AWS ELB 来公开 pod 并在面包屑中导致 csrf 异常,并且有时当我去管理 Jenkins 时我也会收到反向代理警告。

我研究了它说我可以启用扩展代理兼容性或禁用 CSRF 检查的问题。我还没有找到它们所在的 groovy 或配置文件。

我当前的 groovy init 脚本如下:

import hudson.security.csrf.DefaultCrumbIssuer
import jenkins.model.Jenkins

def j = Jenkins.instance;
j.setCrumbIssuer(null); // I've also tried setting a new crumb issuer here as well.
j.save();
System.setProperty("hudson.security.csrf.CrumbFilter", "false");
System.setProperty("hudson.security.csrf", "false");
System.setProperty("hudson.security.csrf.GlobalCrumbIssuerConfiguration", "false");

我似乎找不到有关如何禁用此属性或启用启用代理兼容性属性的引用。
Crumb Algorithm
 Default Crumb Issuer   
        Enable proxy compatibility

我在单击应用时拦截了配置请求,并且传递的 json 负载似乎设置为
"hudson-security-csrf-GlobalCrumbIssuerConfiguration": {
    "csrf": {
        "issuer": {
            "value": "0",
            "stapler-class": "hudson.security.csrf.DefaultCrumbIssuer",
            "$class": "hudson.security.csrf.DefaultCrumbIssuer",
            "excludeClientIPFromCrumb": true
        }
    }
},

我不知道我应该如何设置这些。

最佳答案

如果您确实需要(暂时)禁用 CSRF,则可以使用 groovy 来完成:

import jenkins.model.Jenkins

def instance = Jenkins.instance
instance.setCrumbIssuer(null)

之后应该通过再次设置为默认 CrumbIssuer 再次启用它
Jenkins Wiki 中所述:
import hudson.security.csrf.DefaultCrumbIssuer
import jenkins.model.Jenkins

def instance = Jenkins.instance
instance.setCrumbIssuer(new DefaultCrumbIssuer(true))
instance.save()

注意:之后通过 GUI 设置标志以启用 CSRF 保护是不够的,您还需要检查 crumb 算法。

关于jenkins - 如何使用脚本禁用 Jenkins CSRF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49888756/

相关文章:

jenkins - 如何在 Jenkins 中设置并发 "weight"?

deployment - Jenkins:FTP/SSH 部署,包括删除和移动文件

docker - 无法让 Docker 之外的 Docker 与 ECS 中的 Jenkins 一起工作

xml - 如何参数化grails/groovy xml MarkupBuilder .builder语法?

jenkins - 使用 FilePath 访问 Jenkins 管道中从属设备上的工作区

java - 使用 UnetSocket 在 unetstack 中创建客户端和服务器节点之间的通信

grails - 如何实现 "remote"域?

amazon-web-services - Jenkins AWS 凭证插件不起作用

java - Ant 无法在它创建的 .jar 文件中找到类

java - gradle 中单个复制任务中的多个复制规范(嵌套复制规范)