htaccess mod_auth Apache 網頁伺服器 身份驗證 身份認證 權限

Apache內建基本驗證機制 快速啟用mod_auth網頁認證

2011-07-14
以mod_auth機制進行網頁認證的驗證方式,可說是Apache最基本的驗證型式,其利用使用者自行建立的帳號和密碼來進行控管,而Apache即是利用名為mod_auth的模組來進行網頁認證。
以mod_auth進行網頁認證

一般而言,mod_auth為Apache所預設的模組,無須額外手動安裝。可利用指令「httpd -l」檢查是否有mod_auth.c字句,如果有相關的子句,即表示已包含該模組。在此,假設有如下兩個網站目錄須要權限控管,只有符合權限的使用者方可瀏覽。

/var/www/mywork1
/var/www/mywork2

其中,mywork1目錄只有john使用者可以瀏覽,而mywork2目錄只有frank使用者可登入。接著,說明實作驗證流程的操作步驟。

更改httpd.conf

在httpd.conf檔內新增「AllowOverride ALL」,意指各目錄下的權限控管由該目錄下的.htaccess檔案控管,但使用此種方式,Apache會浪費較多系統資源來搜尋.htaccess,因為畢竟並不是每個目錄都需要控管,所以還是建議利用來設定:

該設定檔中的「AccessFileName .htaccess」這一行則是設定各目錄權限選項的功能由檔名為.htaccess控管。其中,在Linux系統中為隱藏檔,須使用「ls -al」選項,方可顯示隱藏檔。

在欲控管的目錄下新增.htaccess檔案,而.htaccess相關選項說明如下表所示。

在本例中,希望僅有john使用者可使用mywork1的目錄,而mywork2只有frank使用者可登入。

因此,必須先行建立相關的帳號和密碼資訊,可使用Apache所提供的htpasswd程式,此程式可用來建立有效使用者的帳號密碼。htpasswd相關參數用法說明如下:

-c:新建一個帳號和密碼檔案。
-m:利用MD5演算法來加密密碼資訊。
-d:利用CRYPT來加密密碼資訊(htpasswd預設用CRYPT來加密密碼資訊)。
-s:利用SHA演算法來加密密碼資訊。
-p:不加密密碼資訊,以明碼的型式來儲存密碼資訊。
-D:刪除使用者帳號。
-b:手動新增帳號資訊。

接下來,利用htpasswd建立mywork1所需的帳號密碼檔,假設將置於「/etc/mywork1」。

可利用指令「cat /etc/mywork1」來查看該檔案的內容,將會看到如下的內容:

在新增完帳號和密碼資訊後,接下來,必須在mywork1目錄下新增一個.htaccess檔案,檔案內容如下:

以此類推,讀者可自行設定mywork2的相關設定。設定完成後,即可重啟Apache。在瀏覽mywork1時,即會彈出一個認證視窗,要求使用者輸入帳號及密碼,如下圖示所示。

▲經過設定後,瀏覽時會跳出一個認證視窗。

上述此種方式須要自行建立相關的帳號及名稱資訊,如果想要讓系統主機上的使用者均可登入,就必須自行利用htpasswd程式手動一筆一筆地建立相關的帳號資訊,在使用上較為不便。

有鑑於此,Apache伺服器也針對此種需求提供mod_authnz_external模組搭配pwauth驗證程式,如此即可利用系統上的帳號資訊來進行網頁控管。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!