You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁用Jenkins的CSRF防护?或解决Bitbucket触发流水线403问题

解决方案

一、无需禁用CSRF的推荐方案(更安全)

禁用CSRF会降低Jenkins的安全性,优先采用以下两种合规方式:

1. 使用Generic Webhook Trigger插件

  • 安装插件:进入Jenkins插件管理页面,搜索并安装Generic Webhook Trigger插件
  • 配置流水线:
    • 打开目标流水线的配置页,在Build Triggers区域勾选Generic Webhook Trigger
    • 设置Token字段为自定义令牌(例如MY_BUILD_TOKEN)
    • 将Bitbucket的webhook URL设置为:http://<jenkins_URL>/generic-webhook-trigger/invoke?token=MY_BUILD_TOKEN
    • 保存配置后,Bitbucket推送代码时即可自动触发流水线,该插件会自动处理CSRF校验逻辑

2. 携带合法Crumb发起Webhook请求

  • 获取Jenkins Crumb:
    • 使用管理员账号访问http://<jenkins_URL>/crumbIssuer/api/json,返回的JSON包含crumb和crumbRequestField字段,示例:
      {"_class":"hudson.security.csrf.DefaultCrumbIssuer","crumb":"abcdef123456","crumbRequestField":"Jenkins-Crumb"}
      
    • 在Bitbucket的webhook设置中,添加请求头:Jenkins-Crumb: abcdef123456(替换为实际获取的crumb值)
    • 保持原webhook URL不变,此时请求会携带合法的CSRF校验信息,可通过Jenkins的权限验证

二、正确禁用CSRF的方法(仅用于测试或低安全场景)

你之前添加系统属性未生效,大概率是配置方式不正确,以下是两种可靠的禁用方式:

1. 修改Jenkins启动参数

  • 找到Jenkins的启动配置文件:Windows系统通常为jenkins.xml,Linux系统可查看/etc/default/jenkins或/etc/sysconfig/jenkins
  • 在JAVA_ARGS参数中添加:-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true
  • 保存配置后完全重启Jenkins服务(需停止并重新启动,而非仅在Jenkins后台重启应用)

2. 通过Groovy脚本控制台禁用

  • 访问Jenkins的脚本控制台:http://<jenkins_URL>/script
  • 执行以下Groovy脚本:
    import hudson.security.csrf.GlobalCrumbIssuerConfiguration
    import jenkins.model.Jenkins
    
    def jenkinsInstance = Jenkins.get()
    def csrfConfig = GlobalCrumbIssuerConfiguration.get()
    csrfConfig.setDisableCSRFProtection(true)
    jenkinsInstance.save()
    
  • 执行完成后重启Jenkins,CSRF保护即可被禁用

内容的提问来源于stack exchange,提问作者SkyH0rn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 03:44:58