JasperServer代理CSRF错误

rad*_*hop 5 nginx csrf jasperserver

我使用捆绑的Tomcat在Ubuntu 14.04 LTS和Nginx代理上安装了新的JasperReports Server 6.2,这样我就可以访问https://mydomain.xyz/jasperserver.它主要起作用,但我无法管理用户和角色.如果我绕过Nginx并直接进入Tomcat http://123.123.123.123:8080/jasperserver,一切都很完美.日志表明:

2016-02-28 19:44:08,024 ERROR CsrfGuard,http-nio-8080-exec-3:44 - 潜在的跨站点请求伪造(CSRF)攻击被挫败(用户:,ip:127.0.0.1,uri:/ jasperserver /flow.html,错误:请求中缺少必需的令牌)

这与旧的问题完全相同:在nginx后面运行jasperserver:潜在的CSRF攻击.但是我已经尝试过这两种缓解措施,但它仍然无效.

  • 我尝试设置underscores_in_headers on;,首先是in http,然后是in server,然后是两者.
  • 如果没有工作,我去掉了下划线从JASPER_CSRF_TOKENOWASP_CSRFTOKENWEB-INF/esapi/Owasp.CsrfGuard.properties

我重新启动服务器只是为了确保所有内容都已清除并重新启动,但仍然无法正常工作.

我正在寻求解决方案的建议和/或指导哪些方面可以更好地诊断问题.我是Jasper的新手,我的Java/Tomcat技能很生疏.

小智 0

我知道这现在已经很旧了,但是从 JasperReports Server 7.X 开始,可能还有更早的版本:

当通过 Nginx 代理到 JasperReports Server 时,该underscores_in_headers on;设置必须在 nginx 配置中。

从这里的讨论来看,如果没有此设置,JasperReports Server 使用的默认 OWASP_CSRFGUARD 标头将被 Nginx 静默删除。我遇到过的其他代理和负载均衡器都没有这样做。