我有以下服务器设置:
http:// <server-ip>:8081/tickets ) 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。
有想法来解决这个问题:
您需要将Require user myuserreplace为Require valid-user
并删除
<Proxy *> Require all granted </Proxy>