普元Devops学习笔记-devops对接jenkins提示crumb不可用问题

前言

普元devops需要对接jenkins,对接jenkins后,devops会调用jenkins的提供的API。

问题

新版本的jenkins提供跨域保护,即大名鼎鼎的CSRF问题。

因此,普元devops调用jenkins的时候,会出现跨域问题。

后台报错信息如下:

Caused by: com.primeton.devops.specs.exception.DevOpsRuntimeException: DEVOPS_COMMON_ACCESS_OTHER_APP_ERROR: URL[POST http://xxx.xxx.xxx.xxx:xxxx/createItem/api/json?name=build-2-PROJ001-xxljob%E6%9E%84%E5%BB%BA001-1-22] request error.[statusCode=403][errorMessage=No valid crumb was included in the request][responseDetails={
"servlet":"Stapler",
"message":"No valid crumb was included in the request",
"url":"/createItem/api/json",
"status":"403"
}]

可以看到,提示的信息是 No valid crumb was included in the request。这就是jenkins提示跨域问题。

解决办法

老版本Jenkins的CSRF保护功能只需要在 系统管理 > 全局安全配置 中便可进行打开或者关闭。让人头疼的是较高版本的Jenkins竟然在管理页面关闭不了CSRF,网上搜索到的资料有写通过 groovy代码 实现取消保护,但是笔者操作未成功,最后,Get到了一种成功的解决姿势。

在Jenkins启动前加入相关取消保护的参数配置后启动Jenkins,即可关闭CSRF,配置内容如下:

-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true

我的启动命令如下:

#/bin/bash

export JINKINS_HOME=/works/devops/jenkins/home

nohup /works/apps/jdk17/bin/java -jar  -Xms64M -Xmx256M -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true  /works/devops/jenkins/jenkins.war --httpPort=9080 >/works/devops/jenkins/all.log 2>&1 &

Jenkins若是跑在Tomcat下,只需在tomcat启动脚本中加入配置即可;若是以jar包形式部署的,只需在启动时加上配置参数即可。

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小崔爱读书

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值