使用Tomcat的基本身份validationApache

我有以下服务器设置:

  • Apache Tomcat 7运行Atlassian的Jira( http:// <server-ip>:8081/tickets
  • Apache 2.4 web服务器作为反向代理服务器,目前只提供jira应用程序,但还有更多( http://<server-ip>/tickets

现在,我想通过设置一个基本的authentication来限制对整个系统的访问(即http://<server-ip>/ * )。

这是唯一启用的Apache网站configuration如下所示:

 <VirtualHost *:80>
         <代理*>
            要求所有授予
         </代理>

         ProxyRequestclosures
         ProxyPreserveHost打开

         ProxyPass /门票http:// localhost:8081 /门票
         ProxyPassReverse /门票http:// localhost:8081 /门票

         <位置/>
                 AllowOverride AuthConfig
                 AuthType基本
                 AuthName“限制内容”
                 AuthUserFile /etc/apache2/.htpasswd
                要求用户myuser
         </位置>
 </虚拟主机>

但是使用这个configuration,我在尝试login时遇到了一个问题。inputlogin数据后,login窗口popup,再次询问是否login。 经过三次尝试,tomcat返回了401错误! 应用程序,而不是Apache。

对于这个请求,apache的access.log和error.log都没有入口。 虽然Apache会logging错误凭据的请求。

如何configurationApache以将所有/tickets/*请求代理到Tomcat,同时强制客户端在访问/*时进行身份validation?

这让我感到怀疑,我从tomcat应用程序中得到了一个401错误。 看来,阿帕奇承认了授权请求,但它不应该。 我不得不从请求头中删除"Authorization"参数。

去做这个。 我启用了mod_headers并在ProxyPass指令之前添加了RequestHeader unset "Authorization"

所以我现在的configuration如下所示:

 <VirtualHost *:80>

         ProxyRequestclosures
         ProxyPreserveHost打开

         RequestHeader未设置“授权”       

         &ltLocation“/ tickets / rest /”>
                  满足任何
                  订单允许,否认
                  全部允许
         </位置>

         <位置/>
                 AuthType基本
                 AuthName“限制内容”
                 AuthUserFile /etc/apache2/.htpasswd
                要求用户myuser
         </位置>

         ProxyPass /门票http:// localhost:8081 /门票
         ProxyPassReverse /门票http:// localhost:8081 /门票

 </虚拟主机>

编辑:

Jira使用自己的REST-API作为小工具,所以我必须为/tickets/restpath定义一个Location-Tag。

  • 删除代理标签
  • 为jira-rest API添加了Location-Tag

有想法来解决这个问题:

您需要将Require user myuserreplace为Require valid-user

并删除

  <Proxy *> Require all granted </Proxy>