Configuration

使用 Tomcat 的基本身份驗證 Apache

  • April 4, 2016

我有以下伺服器設置:

  • Apache Tomcat 7 執行 Atlassian 的 Jira ( http:// <server-ip>:8081/tickets)
  • Apache 2.4 Web 伺服器作為反向代理,目前僅服務於 jira 應用程序,但還有更多(<http://&lt;server-ip&gt;/tickets>

<http://&lt;server-ip&gt;/>*現在,我想通過設置基本身份驗證來限制對整個系統(即)的訪問。

這是唯一啟用的 apache 站點配置的樣子:

&lt;虛擬主機 *: 80&gt;
&lt;代理 *&gt;
要求所有授予
&lt;/代理&gt;

代理請求關閉
ProxyPreserveHost 開啟

ProxyPass /tickets http://localhost:8081/tickets
ProxyPassReverse /tickets http://localhost:8081/tickets

&lt;位置/&gt;
AllowOverride AuthConfig
AuthType 基本
AuthName“受限內容”
AuthUserFile /etc/apache2/.htpasswd
需要使用者 myuser
&lt;/位置&gt;
&lt;/虛擬主機&gt;

但是使用這個配置我在嘗試登錄時遇到了問題。輸入登錄數據後,登錄視窗彈出再次詢問登錄。3 次嘗試後,tomcat 返回 401 錯誤!應用程序而不是 apache。

apache 的 access.log 和 error.log 中都沒有此請求的條目。儘管 apache 會使用錯誤的憑據記錄請求。

如何配置 Apache 以代理/tickets/*對 Tomcat 的所有請求,同時強制客戶端在訪問時進行身份驗證/*

這讓我懷疑我從 tomcat 應用程序中收到了 401 錯誤。看來,apache 轉發了授權請求,儘管它不應該。我不得不"Authorization"從請求標頭中刪除參數。

去做這個。我在 ProxyPass 指令之前啟用mod_headers並添加了。RequestHeader unset "Authorization"

所以我的配置現在如下所示:

&lt;虛擬主機 *: 80&gt;

代理請求關閉
ProxyPreserveHost 開啟

RequestHeader 未設置“授權” 

&lt;位置“/門票/休息/”&gt;
滿足任何
命令允許,拒絕
允許所有人
&lt;/位置&gt;

&lt;位置/&gt;
AuthType 基本
AuthName“受限內容”
AuthUserFile /etc/apache2/.htpasswd
需要使用者 myuser
&lt;/位置&gt;

ProxyPass /tickets http://localhost:8081/tickets
ProxyPassReverse /tickets http://localhost:8081/tickets

&lt;/虛擬主機&gt;

編輯:

Jira 為小工具使用自己的 REST-API,因此我必須為/tickets/rest路徑定義一個 Location-Tag。

  • 刪除代理標籤
  • 為 jira-rest API 添加了 Location-Tag

從以下方面得到解決問題的想法:

引用自:https://serverfault.com/questions/738358