以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驗證程式,如此即可利用系統上的帳號資訊來進行網頁控管。