Configuration
使用 Tomcat 的基本身份驗證 Apache
我有以下伺服器設置:
- Apache Tomcat 7 執行 Atlassian 的 Jira (
http:// <server-ip>:8081/tickets
)- Apache 2.4 Web 伺服器作為反向代理,目前僅服務於 jira 應用程序,但還有更多(
<http://<server-ip>/tickets>
)
<http://<server-ip>/>*
現在,我想通過設置基本身份驗證來限制對整個系統(即)的訪問。這是唯一啟用的 apache 站點配置的樣子:
<虛擬主機 *: 80> <代理 *> 要求所有授予 </代理> 代理請求關閉 ProxyPreserveHost 開啟 ProxyPass /tickets http://localhost:8081/tickets ProxyPassReverse /tickets http://localhost:8081/tickets <位置/> AllowOverride AuthConfig AuthType 基本 AuthName“受限內容” AuthUserFile /etc/apache2/.htpasswd 需要使用者 myuser </位置> </虛擬主機>
但是使用這個配置我在嘗試登錄時遇到了問題。輸入登錄數據後,登錄視窗彈出再次詢問登錄。3 次嘗試後,tomcat 返回 401 錯誤!應用程序而不是 apache。
apache 的 access.log 和 error.log 中都沒有此請求的條目。儘管 apache 會使用錯誤的憑據記錄請求。
如何配置 Apache 以代理
/tickets/*
對 Tomcat 的所有請求,同時強制客戶端在訪問時進行身份驗證/*
?
這讓我懷疑我從 tomcat 應用程序中收到了 401 錯誤。看來,apache 轉發了授權請求,儘管它不應該。我不得不
"Authorization"
從請求標頭中刪除參數。去做這個。我在 ProxyPass 指令之前啟用
mod_headers
並添加了。RequestHeader unset "Authorization"
所以我的配置現在如下所示:
<虛擬主機 *: 80> 代理請求關閉 ProxyPreserveHost 開啟 RequestHeader 未設置“授權” <位置“/門票/休息/”> 滿足任何 命令允許,拒絕 允許所有人 </位置> <位置/> AuthType 基本 AuthName“受限內容” AuthUserFile /etc/apache2/.htpasswd 需要使用者 myuser </位置> ProxyPass /tickets http://localhost:8081/tickets ProxyPassReverse /tickets http://localhost:8081/tickets </虛擬主機>
編輯:
Jira 為小工具使用自己的 REST-API,因此我必須為
/tickets/rest
路徑定義一個 Location-Tag。
- 刪除代理標籤
- 為 jira-rest API 添加了 Location-Tag
從以下方面得到解決問題的想法: