- crumb是什东西:
首先解释一下CSRF,Cross-Site Request Forgery (CSRF或XSRF)跨站请求伪造,是一种web安全漏洞。如果没有CSRF保护,Jenkins的admin访问其他网站,将允许这个网站对Jenkins执行操作,导致Jenkins受害。 - .Jenkins中的CSRF保护
Jenkins的CSRF保护使用token(在Jenkins里叫crumb),它由Jenkins创建,并发送给用户。任何导致修改的表单提交或者类似的操作,比如:触发任务或修改构建配置,都需要提供Crumb。crumb包含标识创建它的用户的信息,因此使用另一个用户的token提交将被拒绝。 - crumb在脚本里的作用
写一个控制Jenkins的脚本需要用到crumb的原因是因为Jenkins网站的安全机制限制了只有经过身份验证的用户才能访问受保护的页面和执行相关操作。因此,如果想要通过脚本来控制Jenkins,就需要先进行身份验证,获取到对应的crumb标记,然后将该标记添加到请求头中,以便服务器能够识别用户的身份并授权其访问受保护的页面和执行相关操作。 - crumb的获取与应用
具体来说,它会发送一个GET请求到{/crumblssuer/api/json这个URL,其中{/crumblssuer/api/json是Jenkins中用于生成crumb标记的API接口 地址。Jenkns该请求需要使用auth参数来指定发送请求的用户名和API token,以便Jenkins能够验证谴求方的身份。一旦请求成功,返回的响应对象会包含一个名为crumb的JSON对象,其中包含了当前用户的crumb标记。
token需要从Jenkins的用户设置里获取,只显示一次,所以生成token后请立即保存
获取到crumb后把它添加到请求头后,就能够实现对Jenkins的控制