使用反向代理的Apache基本身份验证问题

使用反向代理的Apache基本身份验证问题,apache,authentication,ubuntu,jenkins,reverse-proxy,Apache,Authentication,Ubuntu,Jenkins,Reverse Proxy,我想为运行在Ubuntu服务器12.04.1上的Apache反向代理站点添加基本身份验证 web应用程序是在JavaEE容器上运行的 我在httpd.conf中添加了以下配置 ProxyPass /jenkins/ http://localhost:8080/jenkins/¬ ProxyPassReverse /jenkins/ http://localhost:8080/jenkins/¬ ProxyRequests Off¬ ProxyPreserveHost

我想为运行在Ubuntu服务器12.04.1上的Apache反向代理站点添加基本身份验证

web应用程序是在JavaEE容器上运行的

我在httpd.conf中添加了以下配置

ProxyPass         /jenkins/  http://localhost:8080/jenkins/¬
ProxyPassReverse  /jenkins/  http://localhost:8080/jenkins/¬
ProxyRequests     Off¬
ProxyPreserveHost On¬ 
¬
<Proxy http://localhost:8080/jenkins*>¬
  Order deny,allow¬
  Deny from all¬
▸ AllowOverride AuthConfig¬
▸ AuthType Basic¬
  AuthName "jenkins"¬
▸ AuthBasicProvider file¬
  AuthUserFile /etc/apache2/passfile¬
▸ Require valid-user¬
▸ Satisfy any¬
</Proxy>
ProxyPass/jenkins/http://localhost:8080/jenkins/¬
ProxyPassReverse/jenkins/http://localhost:8080/jenkins/¬
代理请求关闭
ProxyPreserveHost On——
¬
¬
命令拒绝,允许
否认一切
▸ 允许超越授权配置
▸ AuthType Basic
作者姓名“詹金斯”
▸ AuthBasicProvider文件
AuthUserFile/etc/apache2/passfile
▸ 需要有效的用户
▸ 满足任何
当我使用错误的密码或不存在的用户名进行身份验证时,我可以在apache的error.log中找到以下消息

[Sat Oct 27 17:51:59 2012][error][client 222.128.175.95]用户凯恩: “/jenkins/”的身份验证失败:密码不匹配[10月27日星期六] 17:52:04 2012][error][client 222.128.175.95]未找到用户阿拉丁: /詹金斯/

密码文件中使用正确的用户和密码时,不会记录任何消息。虽然我在web浏览器中输入了正确的用户和密码,但身份验证对话框将再次提示。 我还在apache的access.log中找到了以下输出:

222.128.175.95-凯恩[27/Oct/2012:17:39:54+0800]“GET/jenkins/HTTP/1.1”401 794“-”Mozilla/5.0(麦金塔;英特尔Mac OS X 10_8_2) AppleWebKit/537.4(KHTML,比如Gecko)Chrome/22.0.1229.94 Safari/537.4“

有人知道怎么做吗?谢谢。

试试这个配置

ProxyPass         /jenkins/  http://localhost:8080/jenkins/
ProxyPassReverse  /jenkins/  http://localhost:8080/jenkins/
ProxyRequests     Off
ProxyPreserveHost On

<Proxy http://localhost:8080/jenkins*>
    AllowOverride None
    Order allow,deny
    allow from all
    AuthName            "jenkins"
    AuthBasicProvider   file
    AuthType            basic
    AuthUserFile        /etc/apache2/passfile
    <Limit GET POST>
        require valid-user      
    </Limit>
    Satisfy all
</Proxy>
ProxyPass/jenkins/http://localhost:8080/jenkins/
ProxyPassReverse/jenkins/http://localhost:8080/jenkins/
代理请求关闭
代理主机
不允许超限
命令允许,拒绝
通融
作者姓名“詹金斯”
AuthBasicProvider文件
AuthType basic
AuthUserFile/etc/apache2/passfile
需要有效用户
满足所有

您是否也在Jenkins上启用了身份验证?有关设置的说明,请参阅此链接

特别注意这行代码,它说您不能同时在Jenkins和Apache中启用安全性,因为两者会冲突,导致您看到无限提示。不幸的是,你必须选择其中之一


有关Apache+Jenkins设置的更一般性的讨论,请参见此链接:

在浏览器中不再需要身份验证。我认为这是由
命令允许,拒绝所有人的允许造成的,它允许所有人访问。拒绝所有人:它阻止所有人访问,包括身份验证,你可以看到这个链接你可以把IP地址范围改为“全部”来进行身份验证,例如:允许从10.1.0.0/16这个问题是由“满足任何人”引起的您可以通过“全部满足”删除或重新放置“全部满足”允许请求,如果满足任何要求,但“全部满足”仅在满足两个要求时才允许请求,您可以在上面看到我的更新谢谢共享链接。我的jenkins确实也使用OpenId进行身份验证。由于Jenkins CLI的限制,我必须使一些作业可以被匿名用户读取。这就是为什么我想对Apache服务器后面的jenkins使用基本身份验证。看起来jenkins的身份验证和Apache基本身份验证之间存在冲突。无论如何,它给了我一个解释。我知道这篇文章已经3年了,但我是在寻找解决方案时发现的。如果要防止Jenkins显示无限基本身份验证提示,只需在Apache配置中添加
RequestHeader unset Authorization
。请参见此处的完整解决方案: