📜  获取 crumbIssuer (1)

📅  最后修改于: 2023-12-03 15:41:26.479000             🧑  作者: Mango

获取crumbIssuer

在 Jenkins Pipeline 中,获取 crumbIssuer 是一个常用的操作。crumbIssuer 是一个用于 CSRF 防御的 Jenkins 插件,用于生成每个 HTTP 请求的 CSRF 令牌,以确保请求的合法性,防止恶意攻击。

为什么需要获取 crumbIssuer

在 Jenkins Pipeline 中使用 HTTP 请求以及其他插件时,需要发送 HTTP 请求到 Jenkins 服务器。由于 Jenkins 中启用了 CSRF 防御措施,需要将 HTTP 请求中的 crumb 添加到请求的 header 中,以通过 CSRF 验证。

如何获取 crumbIssuer

在 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

获取到 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 请求的合法性。