Jenkins-2.263.1(LTS)
通过tomcat
部署在CentOS-8.2
上,并在Jenkins前面运行Nginx reverse proxy
。
下Manage Jenkins
〉Configure Systems
-Apply
和Save
不工作,由于这个错误,我不能Apply
(或)Save
我的任何配置,它总是在浏览器上显示以下错误(Firefox和Chrome).
HTTP状态403 -禁止
类型状态报告
消息请求中未包含有效的crumb
描述服务器理解请求,但拒绝授权。Apache Tomcat/9.0.30
同样Jenkins
〉Manage Jenkins
〉Configure Global Security
-Apply
工作。但是Save
不工作,这也会导致上面给出的错误。Systems log
错误消息。
二月19,2021 10:56:05 AM警告哈德逊.security.csrf.CrumbFilter doFilter ankit. sahu对/jenkins/configSubmit的请求中没有包含有效的crumb。返回403。
尝试的解决方法:-
1) Under Configure Global security > CSRF Protection > Enable proxy compatibility( Tick marked Enabled). - Didn't work so disabled with below command.
2) hudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION = true - Even this didn't solve the problem.
3) Installed the Strict Crumb Issuer plugin.
Enabled this plugin and unchecked Check the session ID from its configuration (Under Jenkins Configure Global Security).
4) Restated the Jenkins.
甚至尝试在/apache-tomcat-9.0.30/conf/tomcat-users.xml
文件中添加以下内容。
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="user" password="password" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>
</tomcat-users>
但是仍然遇到同样的问题。我不知道如何解决它,有人能帮助我吗?
3条答案
按热度按时间zbwhf8kr1#
您可以使用下面的groovy脚本(暂时)禁用CSRF。转到
Manage Jenkins >> Script Console
,然后执行下面的groovy脚本。ccgok5k52#
嵌入到Jenkins的Web输出中的随机数是基于(至少我已经读到的一部分)来自请求客户端的值的。除了确保您的反向代理被正确配置为传递X-Forwarded-For和X-Forwarded-Proto之外,还要确保Tomcat阀在servlet请求API中公开这些头值,以便Jenkins可以访问它们。
将以下内容添加到
$CATALINA_BASE/conf/server.xml
中,从属于<Host>
元素:参考:https://www.jenkins.io/doc/book/system-administration/reverse-proxy-configuration-troubleshooting/
参考:https://www.jenkins.io/doc/book/system-administration/reverse-proxy-configuration-with-jenkins/
请参阅https://tomcat.apache.org/tomcat-9.0-doc/config/valve.html#Remote_IP_Valve
au9on6nz3#
如果您使用的是
jenkinsapi
,我通过在构造函数中指定useCrumb=True
解决了这个错误: