Apache HTTP Server 版本2.2
說明 | 使用MD5摘要認(rèn)證(更安全,但是只有最新的瀏覽器才支持) |
---|---|
狀態(tài) | 實驗(X) |
模塊名 | auth_digest_module |
源文件 | mod_auth_digest.c |
這個模塊實現(xiàn)了HTTP摘要認(rèn)證。由于尚未進(jìn)行過廣泛的測試,因此標(biāo)記為試驗?zāi)K。
使用MD5摘要認(rèn)證很簡單。簡單的安裝認(rèn)證模塊后使用"AuthType Digest
"和AuthDigestProvider
代替普通的"AuthType Basic
"和AuthBasicProvider
,再添加一個AuthDigestDomain
指令包含至少是需要保護(hù)的區(qū)域的根URI。
可以使用htdigest
工具來創(chuàng)建和添加(純文本)用戶列表文件。
<Location /private/>
AuthType Digest
AuthName "private area"
AuthDigestDomain /private/ http://mirror.my.dom/private2/
AuthDigestProvider file
AuthUserFile /web/auth/.digest_pw
Require valid-user
</Location>
摘要認(rèn)證比基本認(rèn)證更安全,但是直到2004年9月,只有下列最新版本的主流瀏覽器支持它:Amaya, Konqueror, MS Internet Explorer 6(使用查詢字符串時會失敗,參見"配合 MS Internet Explorer 6 工作"), Mozilla, Netscape 7, Opera, Safari 。而lynx不支持摘要認(rèn)證。因為摘要認(rèn)證尚未得到絕大多數(shù)瀏覽器的支持,你應(yīng)當(dāng)只將它應(yīng)用在你可以控制用戶瀏覽器版本的場合。
Internet Explorer 6 的摘要認(rèn)證實現(xiàn)有缺陷,也就是GET
請求的查詢字符串與RFC規(guī)范并不兼容。有幾個途徑來解決這個問題。
第一個途徑就是使用POST
代替GET
來向服務(wù)器傳送數(shù)據(jù)。如果你的程序不會受到這種變化的影響,這是最簡單的方法。
從2.0.51版本開始,Apache還在環(huán)境變量AuthDigestEnableQueryStringHack
中提供了一個工作區(qū)(workaround)。如果AuthDigestEnableQueryStringHack
被打開,Apache將采取措施對付Internet Explorer 6 的bug ,將請求URI從摘要比較中移除。使用這個方法將需要類似如下的配置:
BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
參見BrowserMatch
指令以了解有條件的設(shè)置環(huán)境變量的更多細(xì)節(jié)。
說明 | 選擇在摘要認(rèn)證中用于計算請求和應(yīng)答的散列值的算法 |
---|---|
語法 | AuthDigestAlgorithm MD5|MD5-sess |
默認(rèn)值 | AuthDigestAlgorithm MD5 |
作用域 | directory, .htaccess |
覆蓋項 | AuthConfig |
狀態(tài) | 實驗(X) |
模塊 | mod_auth_digest |
AuthDigestAlgorithm
指令選擇在摘要認(rèn)證中用于計算請求和應(yīng)答的散列值的算法。
MD5-sess
算法當(dāng)前尚未實現(xiàn)。說明 | 在同一保護(hù)區(qū)域中需要進(jìn)行摘要認(rèn)證的URI |
---|---|
語法 | AuthDigestDomain URI [URI] ... |
作用域 | directory, .htaccess |
覆蓋項 | AuthConfig |
狀態(tài) | 實驗(X) |
模塊 | mod_auth_digest |
AuthDigestDomain
指令用于指定一個或者多個在同一保護(hù)區(qū)域中需要進(jìn)行摘要認(rèn)證的URI(也就是使用相同的區(qū)域和用戶名/密碼信息)。這些被指定的URI只是前綴,也就是說客戶端將假定所有位于該URI"之下"的URI亦受到相同用戶名/密碼的保護(hù)。這些被指定的URI可以是絕對URI(也就是包含完整的協(xié)議、主機(jī)、端口等)或者相對URI。
這個指令必須總是被指定為至少包含被保護(hù)頁面的根URI。省略這個會導(dǎo)致客戶端為每個請求都發(fā)送授權(quán)頭,除了增加請求的字節(jié)大小外,如果AuthDigestNcCheck
被設(shè)為"On",還會影響服務(wù)器的性能。
這里指定的URI可以分別指向不同的服務(wù)器,在這種情況下客戶端將會在這些服務(wù)器間共享用戶名和密碼信息,并且不會提醒用戶。
說明 | Enables or disables checking of the nonce-count sent by the server |
---|---|
語法 | AuthDigestNcCheck On|Off |
默認(rèn)值 | AuthDigestNcCheck Off |
作用域 | server config |
狀態(tài) | 實驗(X) |
模塊 | mod_auth_digest |
說明 | Determines how the nonce is generated |
---|---|
語法 | AuthDigestNonceFormat format |
作用域 | directory, .htaccess |
覆蓋項 | AuthConfig |
狀態(tài) | 實驗(X) |
模塊 | mod_auth_digest |
說明 | 服務(wù)器nonce(當(dāng)前值)的有效秒數(shù) |
---|---|
語法 | AuthDigestNonceLifetime seconds |
默認(rèn)值 | AuthDigestNonceLifetime 300 |
作用域 | directory, .htaccess |
覆蓋項 | AuthConfig |
狀態(tài) | 實驗(X) |
模塊 | mod_auth_digest |
AuthDigestNonceLifetime
指令控制服務(wù)器nonce(當(dāng)前值)的有效秒數(shù)。當(dāng)客戶端連接服務(wù)器時使用了一個過期的nonce(當(dāng)前值),服務(wù)器將返回一個帶有"stale=true
"的401錯誤(要求重新認(rèn)證)。如果seconds小于等于"0",那么nonce(當(dāng)前值)將永遠(yuǎn)不會過期(強(qiáng)烈反對這么做)。一般這個值應(yīng)當(dāng)在30到120之間比較合理(最好不要小于10)。
說明 | 設(shè)置該區(qū)域的(摘要)認(rèn)證支持者(Provider) |
---|---|
語法 | AuthDigestProvider provider-name [provider-name] ... |
默認(rèn)值 | AuthDigestProvider file |
作用域 | directory, .htaccess |
覆蓋項 | AuthConfig |
狀態(tài) | 實驗(X) |
模塊 | mod_auth_digest |
AuthDigestProvider
指令設(shè)置了該區(qū)域的(摘要)認(rèn)證支持者(Provider)。默認(rèn)的file
支持者由mod_authn_file
模塊實現(xiàn)。必須確保所需的認(rèn)證支持模塊存在于服務(wù)器中(靜態(tài)連接或DSO)。
能夠提供認(rèn)證支持者(Provider)的模塊如下:mod_authn_dbm
和mod_authn_file
。
說明 | 指定摘要認(rèn)證的保護(hù)質(zhì)量 |
---|---|
語法 | AuthDigestQop none|auth|auth-int [auth|auth-int] |
默認(rèn)值 | AuthDigestQop auth |
作用域 | directory, .htaccess |
覆蓋項 | AuthConfig |
狀態(tài) | 實驗(X) |
模塊 | mod_auth_digest |
AuthDigestQop
指令用于指定使用那個級別的保護(hù)質(zhì)量(quality-of-protection)。auth
將只進(jìn)行認(rèn)證(用戶名/密碼);auth-int
除了認(rèn)證以外還進(jìn)行完整性校驗(實體的MD5值將被計算和檢查);none
將使用舊的RFC-2069摘要算法(不包含完整性檢查);auth
和auth-int
可以同時指定,在這種情況下,瀏覽器將會自己選擇使用哪種一種。none
不推薦使用。
auth-int
目前尚未支持。說明 | 為了跟蹤客戶端而分配的共享內(nèi)存字節(jié)數(shù) |
---|---|
語法 | AuthDigestShmemSize size |
默認(rèn)值 | AuthDigestShmemSize 1000 |
作用域 | server config |
狀態(tài) | 實驗(X) |
模塊 | mod_auth_digest |
AuthDigestShmemSize
指令指定了服務(wù)器啟動時為了跟蹤客戶端而分配的共享內(nèi)存字節(jié)數(shù)。注意,這個共享內(nèi)存段不能設(shè)置為小于只跟蹤一個客戶端所需要的最小內(nèi)存數(shù)量,這個最小數(shù)量取決于你的系統(tǒng)。如果你想知道這個最小值,你只要將AuthDigestShmemSize
設(shè)為"0
",然后讀取重啟Apache時返回的錯誤信息即可。
size通常按照字節(jié)計算,但是可以通過加上后綴"K
"或"M
"來按照KB或MB計算。比如,以下寫法都是一樣的:
AuthDigestShmemSize 1048576
AuthDigestShmemSize 1024K
AuthDigestShmemSize 1M