欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

<-
Apache > HTTP Server > 文檔 > 版本2.2 > 如何.../指南
   致謝 | 譯者聲明 | 本篇譯者:金步國 | 本篇譯稿最后更新:2006年1月8日 | 獲取最新版本

認證、授權、訪問控制

認證(Authentication)是指任何識別用戶身份的過程。授權(Authorization)是允許特定用戶訪問特定區(qū)域或信息的過程。

top

相關模塊和指令

認證和授權涉及到三組模塊。通常,你需要從每一組中選擇至少一個模塊。

mod_authnz_ldap模塊既包含認證功能也包含授權功能。mod_authn_alias模塊自身并不實現(xiàn)認證功能,但是允許其它認證支持模塊以更靈活的方式進行配置。

mod_authz_host模塊提供基于主機名、IP地址、請求特征的訪問控制,但并不屬于認證支持系統(tǒng)。

top

簡介

如果網(wǎng)站上有些敏感信息或只希望為一個小群體所訪問,本文闡述的方法能確保用戶只能訪問被允許的資源。

本文涵蓋了保護站點資源的"標準"方法,大多數(shù)管理員將要用到這些方法。

top

先決條件

本文中討論的指令應該被放進主配置文件(通常在<Directory>段中)或者針對單個目錄的配置文件(.htaccess文件)中。

如果你打算使用.htaccess文件,則必須設置服務器以允許在這些文件中使用認證指令,即用AllowOverride指令指定哪些指令在針對單個目錄的配置文件中有效。

既然本文討論認證,就應該對AllowOverride這樣設置:

AllowOverride AuthConfig

如果你希望把這些指令直接寫入主配置文件,當然就需要具有對主配置文件的寫權限。

而且,你需要對服務器的目錄結構有所了解,以確定某些文件的位置。這個并不難,需要時我們會做適當?shù)恼f明。

top

啟用認證

先介紹用密碼來保護服務器上的目錄。

首先需要建立一個密碼文件。這個文件應該放在不能被網(wǎng)絡訪問的位置,以避免被下載。例如,如果/usr/local/apache/htdocs以外的空間不能被網(wǎng)絡訪問,那么可以考慮把密碼文件放在/usr/local/apache/passwd目錄中。

Apache在其安裝目錄的bin子目錄中提供了htpasswd工具,用于建立密碼文件,可以這樣使用:

htpasswd -c /usr/local/apache/passwd/passwords rbowen

htpasswd會要你輸入密碼,并要求重新輸入以進行確認:

# htpasswd -c /usr/local/apache/passwd/passwords rbowen
New password: mypassword
Re-type new password: mypassword
Adding password for user rbowen

如果htpasswd不在搜索路徑中,則必須使用完整路徑,如:/usr/local/apache/bin/htpasswd

然后修改httpd.conf.htaccess文件,指示服務器允許哪些用戶訪問并向用戶索取密碼。若要保護/usr/local/apache/htdocs/secret目錄,則可以將下列指令寫入/usr/local/apache/htdocs/secret/.htaccess或者httpd.conf的<Directory /usr/local/apache/apache/htdocs/secret>段。

AuthType Basic
AuthName "Restricted Files"
AuthUserFile /usr/local/apache/passwd/passwords
Require user rbowen

讓我們逐個解釋這些指令。AuthType指令選擇對用戶實施認證的方法,最常用的是由mod_auth_basic提供的Basic 。必須認識到的很重要的一點是,Basic認證方法并不加密來自用戶瀏覽器的密碼,因此,不應該用于高度敏感的數(shù)據(jù)。Apache中還有另一種更安全的認證方法"AuthType Digest",即由mod_auth_digest供的摘要認證。目前,只有最新的瀏覽器版本才支持摘要認證。

AuthName指令設置了使用認證的域(Realm),它起兩個作用,首先,此域會出現(xiàn)在顯示給用戶的密碼提問對話框中,其次,也幫助客戶端程序確定應該發(fā)送哪個密碼。

所以,如果一個用戶已經(jīng)在"Restricted Files"域通過了認證,則客戶端就可以嘗試使用同樣的密碼來訪問同一個服務器上任何名為"Restricted Files"域的其他部分,從而使多個受限區(qū)域使用同一個密碼,以避免用戶重復輸入。當然,出于安全考慮,如果服務器變了,客戶端始終會要求重新輸入密碼。

AuthUserFile指令設置了密碼文件的位置,也就是剛才我們用htpasswd建立的文件。如果用戶很多則認證速度會很慢,因為對每個請求都必須搜索這個純文本文件,對此,Apache還支持把用戶信息存入快速的數(shù)據(jù)庫文件,mod_authn_dbm模塊提供了AuthDBMUserFile指令,并可以用dbmmanage程序建立和操作這些數(shù)據(jù)庫。Apache模塊數(shù)據(jù)庫中還提供了許多其他第三方模塊提供的認證選項。

最后,Require指令設置了允許訪問受保護區(qū)域的用戶,下一節(jié)將對Require指令作詳細說明。

top

允許多人訪問

上述指令只允許一個人(一個叫rbowen的用戶)訪問這個目錄,但是多數(shù)情況下,都需要允許多人訪問,所以就要用到AuthGroupFile指令。

如果想允許多人訪問,那么就必須建立一個組文件以確定組中的用戶。其格式很簡單,可以用你喜歡的編輯器建立,例如:

GroupName: rbowen dpitts sungo rshersey

它只是每組一行的一個用空格分隔的組成員列表。

向已有的密碼文件中增加一個用戶,可以輸入:

htpasswd /usr/local/apache/passwd/passwords dpitts

程序的提示和上面的一樣,但是它會追加到已有的文件中,而不是建一個新文件(參數(shù) -c 可以強制建立新的密碼文件)。

現(xiàn)在,需要將.htaccess文件修改成這樣:

AuthType Basic
AuthName "By Invitation Only"
AuthUserFile /usr/local/apache/passwd/passwords
AuthGroupFile /usr/local/apache/passwd/groups
Require group GroupName

現(xiàn)在,GroupName組中的成員都在password文件中有一個相應的記錄,從而允許他們輸入正確的密碼進行訪問。

除了建立組文件,還有另一種途徑允許多人訪問,就是使用如下指令:

Require valid-user

使用上述指令,而不是 Require user rbowen ,可以允許密碼文件中的所有用戶使用正確的密碼進行訪問。通過為每個組建立一個密碼文件,這里甚至允許列舉各個組,其優(yōu)點是Apache只需要檢查一個文件(而不是兩個),其缺點是,必須維護眾多密碼文件,而且要確保AuthUserFile指定了一個正確的密碼文件。

top

可能存在的問題

由于采用了Basic認證的方法,每次向服務器請求甚至刷新一個受保護的頁面或圖片時都必須校驗用戶名和密碼,為此,必須打開密碼文件并逐行搜索用戶名,因此,服務器響應速度會受一些影響,受影響的程度與密碼文件的大小成正比。

所以,對密碼文件中的用戶總數(shù)存在一個實際上的上限,此上限取決于特定的服務器機器的性能,但是一般有幾百個用戶就會對響應速度有非常明顯的影響,在這種情況下,可以考慮用其他認證方法。

top

其他認證方法

基于用戶名和密碼的認證只是方法之一,時常會有不需要知道來訪者是誰,只需要知道來自哪里的情況。

AllowDeny指令可以允許或拒絕來自特定主機名或主機地址的訪問,同時,Order指令告訴Apache處理這兩個指令的順序,以改變過濾器。

這些指令的用法:

Allow from address

address可以是一個IP地址(或者IP地址的一部分),也可以是一個完整的域名(或者域名的一部分),還可以同時指定多個IP地址和域名。

比如,要拒絕不受歡迎的兜售垃圾的站點:

Deny from 205.252.46.165

這樣,這個指令所管轄的區(qū)域將拒絕所有來自該地址的訪問。除了指定IP地址,也可以指定域名,如:

Deny from host.example.com

另外,還可以指定地址或域名的一部分來阻止一個群體:

Deny from 192.101.205
Deny from cyberthugs.com moreidiots.com
Deny from ke

Order可以組合DenyAllow指令,以保證在允許一個群體訪問的同時,對其中的一些又加以限制:

Order deny,allow
Deny from all
Allow from dev.example.com

只列出Allow指令不會得到你想要的結果,因為它在允許指定對象訪問的同時并不禁止其他未列出的對象的訪問。所以上例使用的方法是:首先拒絕任何人,然后允許來自特定主機的訪問。

top

更多信息

mod_auth_basicmod_authz_host文檔中有更多的有關資料。mod_authn_alias同樣有助于簡化認證配置。