我想限制對 Apache 提供的某些目錄的存取。我希望客戶端必須輸入使用者名稱和密碼,但隨後我希望 Apache 會取得使用者輸入的使用者名稱和密碼,並將它們作為參數傳遞給我編寫的用於進行驗證的 python 腳本。然後,根據所述腳本的輸出,我希望 Apache 允許或拒絕存取。這可能嗎?
答案1
我知道做到這一點的唯一方法是使用mod_auth_external
或者mod_python
。第一個允許您實作自訂身份驗證系統;後者為 Apache 提供了一個嵌入式 Python 解釋器,可用於編寫自訂身份驗證腳本。兩者都不是標準的或非常流行的模組。
然而...
最簡單的方法是讓您的身分驗證系統更新 Apache 使用的密碼清單。 Apache 附帶了從 .htpasswd 或 .htdigest 檔案新增/更新/刪除使用者所需的所有工具(將htpasswd
或命令掛接到任何使用者管理系統中應該很簡單htdigest
)。
或者,您可以mod_auth
透過以下模組(Apache 的預設驗證系統)從資料庫讀取資料:
mod_auth_dbm
- 一個標準模組,允許您使用dbm 系列前關係型資料庫mod_auth_mysql
- 允許您使用MySQL資料庫的第三方模組- 您也可以使用 PostgreSQL 和其他 SQL 資料庫
mod_dbd
和mod_authn_dbd
。
我個人會走這條路,因為它比在單獨的文字檔案中複製使用者密碼雜湊(希望你沒有儲存密碼本身)更優雅,並且創建一個新的身份驗證系統似乎是重新發明輪子。
答案2
您可以使用 .htaccess 來限制對某些目錄的存取。
http://www.elated.com/articles/password-protecting-your-pages-with-htaccess/
您需要建立一個從 .htaccess 檔案引用的 htpasswd 文件
http://www.htaccesstools.com/htpasswd-generator/
Python:似乎有一個可以處理 htpasswd 檔案的函式庫:
http://pacopablo.com/wiki/pacopablo/blog/htpasswd-with-python
有關 python 和 htpasswd 的更多資訊:
http://packages.python.org/passlib/lib/passlib.apache.html
我對python不熟悉,無法給你完整的解決方案。不過,我認為這是可能的,而且如果你熟悉 python,並用谷歌搜尋一下,可能不會太複雜。