首页 > 解决方案 > 卷曲命令传递脚本行以获取 crumb 值并执行我的 groovy 脚本

问题描述

我已尝试使用以下命令在 jenkins 脚本控制台中执行我的 groovy,以在 v2.222.2 中禁用 CSRF。

CRUMB=$(curl -u "$userName" ' https://jenkins-testcrumb.origin-elr-core-nonprod.com/crumbIssuer/api/xml?xpath=concat(//crumbRequestField ,":",//屑)')

CRUMB_DISABLE=$(curl "$userName" "script=hudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION = true" -H "$CRUMB" https://jenkins-testcrumb.origin-elr-core-nonprod.com/scriptText )

错误:

% Total % Received % Xferd 平均速度 时间 时间 当前 Dload 上传总花费 左速度 100 462 100 462 0 0 1002 0 --:--:-- --:--:-- --:--:-- 1004 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:- - 0curl:(6)无法解析主机:kvinod5;未知错误 curl:(6)无法解析主机:script=hudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION = true; 未知错误 100 90 0 90 0 0 498 0 --:--:-- --:--:-- --:--:-- 498

有人可以帮我如何获得灵魂吗?

标签: jenkinscurlcsrfjenkins-groovy

解决方案


这不起作用,请改用Api 令牌Jenkins 升级文档指出:

在启动时将系统属性设置hudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION为 true 以禁用 CSRF 保护以及它的配置 UI。这是一个不受支持的选项,将来可能会被删除。

这表明它必须在启动时设置,并且以后不能修改。

此外,您要实现的目标还有几个问题:

该错误表明它找不到主机:script=hudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION = true;,这指向您的第二次curl调用不正确,应该是:

$(curl -u "$userName" --data-urlencode "script=hudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION = true" -H "$CRUMB" https://jenkins-testcrumb.origin-elr-core-nonprod.com/scriptText)

此调用仍将失败并返回无效的 crumb,因为脚本不再接受 Crumbs。您应该改用api 令牌

此外,要设置属性,您需要调用System.setProperty,因此您的脚本应该是:

"script=System.setProperty('hudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION', 'true'"

但如前所述,该属性是在启动时检查的,因此稍后更改它不会禁用 Crumb 系统。


推荐阅读