当前位置: 首页 > 面试题库 >

Ansible jenkins_plugin模块返回“ HTTP错误403:请求中未包含有效碎屑”

松英喆
2023-03-14
问题内容

我将Ansible(v 2.8)用作Packer模板背后的供应商,以为Jenkins主节点构建AMI。对于以前的版本,剧本已成功通过。但是,从Jenkins
2.176.3版开始,该jenkins_plugin模块已抛出:

HTTP错误403:请求中未包含有效的屑

我已经检索了面包屑并将其注册在变量中。我尝试将其传递给jenkins_pluginhttp_agent字段,但这不起作用。我尝试使用attributes,但这也无济于事。除非我缺少令人难以置信的基本知识,否则我将束手无策。

- name:               Get Jenkins Crumb
  uri:
    force_basic_auth: yes
    url_username:     ****
    url_password:     ****
    url:              http://localhost:8080/crumbIssuer/api/json
    return_content:   yes
  register:           jenkins_crumb
  until:              jenkins_crumb.content.find('Please wait while Jenkins is getting ready') == -1
  retries:            10
  delay:              5

- name:               Install plugin
  jenkins_plugin:
    name:             "{{ item }}"
    version:          latest
    force_basic_auth: yes
    url_username:     ****
    url_password:     ****
    http_agent:       "Jenkins-Crumb:{{ jenkins_crumb.json.crumb }}"
  with_items:         "{{ jenkins_plugins }}"

我希望安装插件和一个愉快构建的AMI。我得到的是“ HTTP错误403:请求中未包含有效碎屑”,并且Packer构建失败。


问题答案:

看起来像2.176 LTS版本中的碎屑发行者所做的更改 强制将初始令牌生成调用的Web会话ID连同碎屑一起包含在使用所述碎屑的后续调用中。

CSRF令牌(小块)现在仅对创建它们的Web会话有效,以限制攻击者获取它们的影响。使用/ crumbIssuer / api
URL获取垃圾的脚本现在将无法执行受CSRF保护的操作,除非脚本在后续请求中保留了Web会话ID。

除了建议您暂时禁用CSRF之外,同一文档还建议您只能禁用新功能,而不能禁用整个CSRF,这应允许您的打包程序/可写程序按照以前的方式完成。

要禁用此改进,可以将系统属性hudson.security.csrf.DefaultCrumbIssuer.EXCLUDE_SESSION_ID设置为true。

编辑:

/etc/default/jenkins在我自己的剧本(Ansible 2.8.4,Ubuntu 18.04,OpenJDK
11.0.4)中添加以下行可清除CSRF问题。

JAVA_ARGS="$JAVA_ARGS -Dhudson.security.csrf.DefaultCrumbIssuer.EXCLUDE_SESSION_ID=true"

在工具维护人员赶上API更改之前,可能是一个足够好的拐杖。



 类似资料:
  • 问题内容: 我最近升级到Jenkins 2.192,我的应用程序开始失败并出现以下错误: 降级为Jenkins 2.189后,我看不到问题。我看不到詹金斯2.189、2.190、2.191的问题。我遇到了詹金斯2.192(也见2.196)的问题 2.191和2.192之间发生了某些变化,导致了我观察到的故障。 问题答案: 一个无需更改源代码的简单解决方案(已通过Jenkins v2.222验证):

  • 对localhost的Ajax请求返回403错误。然而,当我更改controller requestMethod以获取并在浏览器上打开请求“url”时,它会显示从服务器返回的json数据。我希望使用这些数据填充一个下拉列表。请帮帮我。我正在使用spring security 4.0和spring MVC框架。CSRF未禁用。此外,该url在Spring得到保护。 我在这里查看了相关问题,但没有找到

  • 我在Postman中有以下cURL请求,它工作得非常好,但是,一旦我将这个cURL请求转换为Laravel 8,就很难获得相同的响应数据。使用HTTP facade的x格式。 curl请求 Laravel HTTP请求 //增加了使用Illuminate\Support\Facades\Http;在班上名列前茅 预期输出 实际输出 在Laravel中运行debug()命令时,我可以看到以下错误

  • 问题内容: 我有一个使用graphene-django实现的graphql服务器。我可以像这样使用jquery对其进行查询: 但是,当我尝试使用Fetch进行此调用时,由于CORS问题,我得到403。我通过在调用之前添加ajaxSetup …解决了jQuery中的相同问题。 这是使用提取的调用: 我尝试以与jQuery示例中相似的方式将csrfmiddlewaretoken添加到主体,但没有运气。

  • 问题内容: 我有以下代码: 那应该从给定的URL返回图像。 我测试了以下两个随机选择的URL: https://www.google.co.ma/images/srpr/logo4w.png http://www.earthtimes.org/newsimage/osteoderms-storing-minerals-helped-huge-dinosaurs-survive_3011.jpg 第

  • 问题内容: 这工作正常: 这将返回400 Bad Request(只是使用.ajax来支持错误处理的上述jQuery的重新格式)。 问题答案: 我认为您只需要再添加2个选项(和):