我遇到了以自动方式禁用CSRF保护的问题。我希望在Jenkins Master Starts之前使用groovy init脚本或仅在属性文件中禁用。我不确定为什么我会遇到碎屑问题,我认为它与K8S / AWS中暴露的LB有关。我正在使用AWS ELB来公开pod及其在crumb中导致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
}
}
},
我不确定我应该设置这些内容。
答案 0 :(得分:1)
我偶然发现了这个问题,而我正在试图弄清楚我的头发或多或少相同的东西(在我的情况下,我需要知道代理兼容性选项如何映射到Jenkins的config.xml)。在表单的HTML源代码中,有一些有用的信息(为简洁而截断):
<label>Enable proxy compatibility</label><a helpURL="/descriptor/hudson.security.csrf.DefaultCrumbIssuer/help/excludeClientIPFromCrumb"><img /></a>
excludeClientIPFromCrumb
是DefaultCrumbIssuer
上的构造函数参数,因为javadocs公开:http://javadoc.jenkins-ci.org/hudson/security/csrf/DefaultCrumbIssuer.html。我只需要在config.xml中翻转该值 - 我的困惑源于UI中字段的标签与构造函数参数名称的不同。
对于您的情况,如果您想使用启用了“启用代理兼容性”的默认crumb提供程序启用CSRF保护,则可以在脚本中执行
j.setCrumbIssuer(new DefaultCrumbIssuer(true));
答案 1 :(得分:0)
答案 2 :(得分:0)
如果您真的需要(临时)禁用CSRF,可以使用groovy来完成:
import jenkins.model.Jenkins
def instance = Jenkins.instance
instance.setCrumbIssuer(null)
此后应通过再次设置为Default CrumbIssuer再次启用它 如Jenkins Wiki中所述:
import hudson.security.csrf.DefaultCrumbIssuer
import jenkins.model.Jenkins
def instance = Jenkins.instance
instance.setCrumbIssuer(new DefaultCrumbIssuer(true))
instance.save()
N.B .:仅仅设置标志以通过GUI启用CSRF保护是不够的,您还需要检查屑算法。