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