透過 apache2 反向代理進行角色管理身份驗證

透過 apache2 反向代理進行角色管理身份驗證

最初發佈在 SO,但我想它更屬於這裡。歡迎提出建議、意見和理想的解決方案! (順便說一句,如果它是錯誤的地方,我會刪除SO線程)

我需要設定一個反向代理來提供從外部到內部伺服器的受限存取。以下是主要要求:

  • 重定向請求來自https://www.example.comhttp://內部伺服器(完畢)
  • 依賴簡單但經過驗證的身份驗證機制。 (正在工作)
  • 透過為 URL 新增一些 G​​ET 參數來管理使用者角色。 (但如何?)
  • 伺服器正在託管一個java應用程式。我還沒有訪問它的權限,並且它的應用程式程式碼也不會更改。這應該不重要。

我安裝並配置了模組代理,並且重定向工作正常。
auth 使用 apache2基本認證,這在安全性方面應該足夠了。

現在,我的問題是角色管理。我需要更改請求,以便使用者 foo 具有管理員權限,而使用者 bar 則沒有。它應該像設定一個 GET 參數一樣簡單"&role=admin",但我不知道在代理請求時如何執行此操作。

這些角色目前儲存在專用的 MySQL 資料庫中,因此只需發出請求即可取得權限,這可以在 PHP 中輕鬆完成。我的問題是,如果我呼叫 php 頁面,我不知道如何保持代理行為。我希望每個請求都附加角色參數,但需要保持請求的其餘部分不變。

我目前的代理程式透過虛擬主機配置(別名 .htaccess)執行所有操作,但我不知道哪種方法可行。我無法在 VHost 中執行 MySQL 請求,並且重定向到 php 頁面會 -據我所知- “打破”代理概念,因為我會重定向,但可能會丟失“其他請求參數”,這對我來說不是很清楚,因為我從未使用過代理。

libapache2-mod-auth-mysql可能是解決方案,但該模組似乎已停產,所以我什至無法嘗試。 mod_authn_dbd 可以是一個解決方案嗎?到目前為止,我還沒有成功使用它登錄,但是,無論如何,我不確定它是否可以解決我添加 get 參數的需要。

我已經沒有主意了。
我怎樣才能實現我所需要的?我很確定有一個簡單的解決方案可以滿足這種常見的需求。

答案1

唯一想到的是編寫自己的簡單代理,例如在 php/curl 上。 Apache 將充當支援 php 的 Web 伺服器,而 php/curl 將根據提供的使用者名稱代​​理請求並修改 GET 參數。您甚至可以進行啟用 cookie 的身份驗證,而不僅僅是 HTTP 身份驗證。

你也可以使用nginx、HTTP 身份驗證和nginx lua 模組嘗試同樣的事情,但這基本上是相同的東西,只是不需要在lua 中編寫代理- lua 只會決定用戶是否值得管理員角色,而nginx 將代理請求並修改 GET 參數。

相關內容