📅  最后修改于: 2023-12-03 15:41:26.479000             🧑  作者: Mango
在 Jenkins Pipeline 中,获取 crumbIssuer 是一个常用的操作。crumbIssuer 是一个用于 CSRF 防御的 Jenkins 插件,用于生成每个 HTTP 请求的 CSRF 令牌,以确保请求的合法性,防止恶意攻击。
在 Jenkins Pipeline 中使用 HTTP 请求以及其他插件时,需要发送 HTTP 请求到 Jenkins 服务器。由于 Jenkins 中启用了 CSRF 防御措施,需要将 HTTP 请求中的 crumb 添加到请求的 header 中,以通过 CSRF 验证。
在 Jenkins Pipeline 中,可以通过以下函数获取 crumbIssuer:
def crumb = ''
def crumbUrl = "${JENKINS_URL}/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,\":\",//crumb)"
crumb = sh(script: "curl --user ${JENKINS_USER}:${JENKINS_PASS} -s \"$crumbUrl\"", returnStdout: true).trim()
这段代码会通过 HTTP GET 请求获取 crumbIssuer,并使用 curl 命令进行请求发送。其中,${JENKINS_URL}
、${JENKINS_USER}
、${JENKINS_PASS}
是 Jenkins 的 URL、用户名与密码,需要在代码中进行替换。
获取到 crumbIssuer 后,可以将其添加到 HTTP 请求 header 中,例如:
def response = httpRequest httpMode: 'POST', url: 'http://example.com', customHeaders: [[name: 'Jenkins-Crumb', value: crumb]], requestBody: 'data to send'
这段代码会发送一个 HTTP POST 请求到 http://example.com
,并在请求 header 中添加 Jenkins-Crumb
属性,其值为获取到的 crumbIssuer。
在 Jenkins Pipeline 中,获取 crumbIssuer 是非常重要的操作。通过获取 crumbIssuer 并将其添加至 HTTP 请求 header 中,可以有效地增强 Jenkins 的安全性,保证 HTTP 请求的合法性。