一、序言 現在很多網站對用戶的訪問權限進行了嚴格的限制,用戶在訪問某些資源時需要給出“用戶名/口令”來確認自己的身份。目前,使用最多的身份認證方法是將用戶名、口令存放在一個數據庫中,當用戶要訪問某些受限制的資源時,要在某一個頁面中輸入用戶名和口令,程序將用戶輸入的用戶名和口令與數據庫存放的“用戶名/口令"相比較,如果輸入正確,則正常使用資源,否則,資源訪問被拒絕。但是,這種身份認證方式有兩個很大的問題,一方面只要用戶有一次身份認證成功,就可以記錄下受限資源的鏈接地址,在下一次訪問時只需輸入該地址,而無需通過身份認證過程就可訪問受限資源;另一方面用戶可以在受限制的資源的超級鏈接處點右鍵,選擇“屬性",就可以查看到受限制資源的鏈接地址,直接訪問該地址,使身份認證不能達到預期的效果。
Apache可以很好地解決上述問題。Apache是建立WWW網站的軟件,可運行於Linux、 Unix和Windows操作系統下。下面就以Linux為例介紹Apache是如何完成用戶身份認證功能的。
二、基本原理
Apache實現身份認證的基本原理是:當系統管理員啟動身份認證功能後,可以在要限制的目錄中添加一個默認名“.htaccess"的文件。當用戶訪問該路徑下的資源時,系統就會彈出一個對話框,要求用戶輸入“用戶名/口令"。也就是說,它的身份認證功能不是人為由程序控制,而是由系統直接控制的。這樣就避免了用戶記錄需要認證的資源的超級鏈接,不會下次直接訪問資源。
身份認證的方法有多種,其中包括Apache中預編譯好的mod—auth模塊和Apache自帶的但未編譯好的模塊,如:mod—auth—dbm模塊、mod—auth—db模塊、mod—auth—msql模塊。另外還有一些第三方開發的模塊,如:MySQL數據庫中使用的mod—auth—MySQL模塊,他們都可以對一組用戶或某個用戶進行限制。
三、具體實現 下面主要介紹mod—auth模塊和mod—auth—MySQL模塊的使用。但無論采取何種認證方式,都要先對Apache做一些設置:在配置文件access.conf中作如下的設置:
AccessFileName . htaccess
AllOerride All
(一) mod—auth模塊完成身份認證功能,它主要是把允許訪問資源的組名、用戶名、用戶口令以文本文件的方式存放,具體方法是:
1.編輯認證用的組文件:主要用於存放可以訪問受限制的資源的組名以及其中的用戶,用Vi編輯組文件.htgroup如下
ptisi : lkch
存放在 /sur/local/apache/secrets/.htgroup路徑下,其中ptisi是組名,lkch是組中的用戶名。
2.建立用戶文件:主要用於存放某一組中的用戶名和口令
htpasswd -c /usr/local/apache/secrets/.htpasswd lkch
注:htpasswd是Apache提供用於實現認證功能的程序,-c表示產生新的.htpasswd文件,如果存在同名舊文件,則覆蓋舊文件。該程序將詢問口令,鍵入“hello"然後重新確認口令。
3.在要限制的資源的目錄內編輯 .htaccess文件
AuthName ″This is a test″
AuthType Basic
AuthUserFile /usr/local/apache/secrets/.htpasswd
AuthGroupFile /usr/local/apache/secrets/.htgroup
repuire group ptisi
注:參數require group 指定哪些組的用戶可以訪問認證資源,這樣,當再次訪問需要認證的資源存在的目錄時,系統就會彈出對話框,要求輸入“用戶名/口令"。
上一頁12下一頁查看全文
內容導航