groovy 如何使用脚本禁用Jenkins CSRF?

eqfvzcg8  于 8个月前  发布在  Jenkins
关注(0)|答案(3)|浏览(74)

我无法自动关闭CSRF保护。我想在Jenkins Master启动之前用groovy init脚本或属性文件禁用。我不知道为什么我得到了一个面包屑问题,我认为这与K8S / AWS中暴露的LB有关。我正在使用AWS ELB来公开pod,它在crumb中导致了csrf异常,有时当我后藤管理Jenkins时,我也会收到反向代理警告。
我研究了这个问题,它说我可以启用扩展的代理兼容性或禁用CSRF检查。我还没有找到这些文件所在的groovy或config文件。
我当前的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

当我点击apply时,我截获了配置请求,传递的json负载似乎是

"hudson-security-csrf-GlobalCrumbIssuerConfiguration": {
    "csrf": {
        "issuer": {
            "value": "0",
            "stapler-class": "hudson.security.csrf.DefaultCrumbIssuer",
            "$class": "hudson.security.csrf.DefaultCrumbIssuer",
            "excludeClientIPFromCrumb": true
        }
    }
},

我不知道我应该怎么设置这些。

iibxawm4

iibxawm41#

如果你真的需要(暂时)禁用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()

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

pkwftd7m

pkwftd7m2#

当我绞尽脑汁试图弄清楚或多或少相同的事情时,我偶然发现了这个问题(在我的情况下,我需要知道代理兼容性选项如何Map到Jenkins的XML)。在表单的HTML源代码中,有一些有用的信息(为简洁起见,将其截断):

<label>Enable proxy compatibility</label><a helpURL="/descriptor/hudson.security.csrf.DefaultCrumbIssuer/help/excludeClientIPFromCrumb"><img /></a>

excludeClientIPFromCrumbDefaultCrumbIssuer上的一个构造函数参数,正如javadocs公开的那样:http://javadoc.jenkins-ci.org/hudson/security/csrf/DefaultCrumbIssuer.html。我只需要在我的http://javadoc.jenkins-ci.org/hudson/security/csrf/DefaultCrumbIssuer.html. xml中翻转这个值-我的困惑源于UI中字段的标签与构造函数参数的名称不同。
对于您的情况,如果您想使用默认的crumb提供程序启用CSRF保护,并打开“enableproxycompatibility”,则可以在脚本中执行

j.setCrumbIssuer(new DefaultCrumbIssuer(true));
busg9geu

busg9geu3#

您可以简单地在请求中添加crumb,而不是禁用CSRF,这样您就不会再收到该错误。请通过this link来完成。请通过this link获取更多信息。希望这对你有帮助。

相关问题