Apache 認(rèn)證總結(jié)
2024-08-27 18:25:15
供稿:網(wǎng)友
這就是用戶認(rèn)證的一種技術(shù)。用戶認(rèn)證是保護(hù)網(wǎng)絡(luò)系統(tǒng)資源的第一道防線,它控制著所有登錄并檢查訪問用戶的合法性,其目標(biāo)是僅讓合法用戶以合法的權(quán)限訪問網(wǎng)絡(luò)系統(tǒng)的資源。基本的用戶認(rèn)證技術(shù)是“用戶名+密碼”。
Apache是目前流行的Web服務(wù)器,可運(yùn)行在Linux、Unix、Windows等操作系統(tǒng)下,它可以很好地解決“用戶名+密碼”的認(rèn)證問題。Apache用戶認(rèn)證所需要的用戶名和密碼有兩種不同的存貯方式:一種是文本文件;另一種是MSQL、Oracle、MySQL等數(shù)據(jù)庫。下面以Linux的Apache為例,就這兩種存貯方式,分別介紹如何實(shí)現(xiàn)用戶認(rèn)證功能,同時(shí)對Windows的Apache用戶認(rèn)證作簡要的說明。
一. 采用文本文件存儲(chǔ)
這種認(rèn)證方式的基本思想是:Apache啟動(dòng)認(rèn)證功能后,就可以在需要限制訪問的目錄下建立一個(gè)名為.htaccess的文件,指定認(rèn)證的配置命令。當(dāng)用戶第一次訪問該目錄的文件時(shí),瀏覽器會(huì)顯示一個(gè)對話框,要求輸入用戶名和密碼,進(jìn)行用戶身份的確認(rèn)。若是合法用戶,則顯示所訪問的頁面內(nèi)容,此后訪問該目錄的每個(gè)頁面,瀏覽器自動(dòng)送出用戶名和密碼,不用再輸入了,直到關(guān)閉瀏覽器為止。以下是實(shí)現(xiàn)的具體步驟:
以超級用戶root進(jìn)入Linux,假設(shè)Apache 1.3.12已經(jīng)編譯、安裝到了/usr/local/apache目錄中。缺省情況下,編譯Apache時(shí)自動(dòng)加入mod_auth模塊,利用此模塊可以實(shí)現(xiàn)“用戶名+密碼”以文本文件為存儲(chǔ)方式的認(rèn)證功能。
1.修改Apache的配置文件/usr/local/apache/conf/httpd.conf,對認(rèn)證資源所在的目錄設(shè)定配置命令。
下例是對/usr/local/apache/htdocs/members目錄的配置:
<Directory /usr/local/apache/htdocs/members>
Options Indexes FollowSymLinks
allowoverride authconfig
order allow,deny
allow from all
</Directory>
其中,allowoverride authconfig一行表示允許對/usr/local/apache/htdocs/members目錄下的文件進(jìn)行用戶認(rèn)證。
2.在限制訪問的目錄/usr/local/apache/htdocs/members下建立一個(gè)文件.htaccess,其內(nèi)容如下:
AuthName /"會(huì)員區(qū)/"
AuthType basic
AuthUserFile/usr/local/apache/members.txt
require valid-user
說明:文件.htaccess中常用的配置命令有以下幾個(gè):
1)AuthName命令:指定認(rèn)證區(qū)域名稱。區(qū)域名稱是在提示要求認(rèn)證的對話框中顯示給用戶的。
2)AuthType命令:指定認(rèn)證類型。在HTTP1.0中,只有一種認(rèn)證類型:basic。在HTTP1.1中有幾種認(rèn)證類型,如MD5。
3)AuthUserFile命令:指定一個(gè)包含用戶名和密碼的文本文件,每行一對。
4)AuthGroupFile命令:指定包含用戶組清單和這些組的成員清單的文本文件。組的成員之間用空格分開,如:managers:user1 user2。
5)require命令:指定哪些用戶或組才能被授權(quán)訪問。如:
require user user1 user2 (只有用戶user1和user2可以訪問)
require group managers (只有組managers中成員可以訪問)
require valid-user (在AuthUserFile指定的文件中任何用戶都可以訪問)
3.利用Apache附帶的程序htpasswd,生成包含用戶名和密碼的文本文件:/usr/local/apache/members.txt,每行內(nèi)容格式為“用戶名:密碼”。
#cd /usr/local/apache/bin
#htpasswd -bc ../members.txt user1 1234
#htpasswd -b ../members.txt user2 5678
文本文件members.txt含有兩個(gè)用戶:user1,口令為1234;user2,口令為5678。注意,不要將此文本文件存放在Web文檔的目錄樹中,以免被用戶下載。
欲了解htpasswd程序的幫助,請執(zhí)行htpasswd -h。
當(dāng)用戶數(shù)量比較少時(shí),這種方法對用戶的認(rèn)證是方便、省事的,維護(hù)工作也簡單。但是在用戶數(shù)量有數(shù)萬人,甚至數(shù)十萬人時(shí),會(huì)在查找用戶上花掉一定時(shí)間,從而降低服務(wù)器的效率。這種情形,應(yīng)采用數(shù)據(jù)庫方式。