2012-10-27 55 views
5

我想爲在Ubuntu服務器12.04.1上運行的Apache的反向代理站點添加基本身份驗證。反向代理的Apache基本身份驗證問題

Web應用程序是Jenkins,它運行在Java EE容器上。

我加入下面配置在的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> 

當我用錯密碼或非存在用於認證的用戶名,我可以找到以下消息中error.log中的Apache

[週六10月27日17時51分59秒2012] [錯誤] [客戶端222.128.175.95]用戶凱恩: 爲 「/詹金斯/」 認證失敗:密碼不匹配[週六10月27日 17點52分04秒2012] [錯誤] [客戶端222.128.175.95]用戶阿拉丁未找到: /詹金斯/

沒有消息將在密碼文件使用正確的用戶口令和當被記錄。雖然我在Web瀏覽器中輸入正確的用戶名和密碼,但驗證對話框會再次提示。 我還發現下面輸出在的access.log的Apache

222.128.175.95 - 凱恩[27月/ 10月/ 2012:17:39:54 0800] 「GET /詹金斯/ HTTP/1.1」 401 794 「 - 」 「Mozilla的/ 5.0(Macintosh上,英特爾的Mac OS X 10_8_2) 爲AppleWebKit/537.4(KHTML,例如Gecko)瀏覽器/ 22.0.1229.94 Safari瀏覽器/ 537.4」

有誰知道如何使這行得通?謝謝。

回答

4

你對詹金斯啓用驗證呢?請參閱此鏈接:https://wiki.jenkins-ci.org/display/JENKINS/Apache+frontend+for+security以獲取有關設置的說明。

尤其要注意的是,在Jenkins和Apache同時啓用安全性的行不能同時啓用,因爲兩者會發生衝突,導致您看到的無限提示。不幸的是,你必須選擇一個或另一個。

也看到此鏈接爲Apache +詹金斯設置的更廣泛的討論:https://wiki.jenkins-ci.org/display/JENKINS/Running+Jenkins+behind+Apache

+0

感謝您分享鏈接。我的詹金斯確實也使用OpenId進行身份驗證。由於詹金斯CLI的限制,我必須讓一些工作可以由匿名用戶閱讀。這就是爲什麼我想爲Apache服務器後面的jenkins使用基本身份驗證。看起來jenkins在其身份驗證和Apache基本身份驗證之間有衝突。無論如何,它給了我一個解釋。 – Kane

+0

我知道這篇文章是3歲,但我在搜索解決方案時發現它。如果你想阻止Jenkins顯示無限的基本身份驗證提示,只需在你的Apache配置文件中添加'RequestHeader unset Authorization'。在這裏查看完整的解決方案:http://jenkins-ci.361315.n4.nabble.com/SOLVED-Apache-SSL-Proxy-Jenkins-tp4700182p4700212.html – Alex

1

試試這個配置

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> 
+0

沒有任何更多的瀏覽器需要進行身份驗證。我認爲這是由'訂單允許,否認 允許所有'造成的,允許所有訪問。 – Kane

+0

拒絕所有:它阻止所有訪問包括身份驗證,你可以看到這個鏈接http://httpd.apache.org/docs/2.0/mod/mod_access.html – developer

+0

你可以把IP地址範圍,而不是「全部」例如:允許從10.1.0.0/16 – developer