# Apache模塊 mod_auth_digest
| [說明](#calibre_link-11) | 使用MD5摘要認證(更安全,但是只有最新的瀏覽器才支持) |
| --- | --- |
| [狀態](#calibre_link-12) | 實驗(X) |
| [模塊名](#calibre_link-13) | auth_digest_module |
| [源文件](#calibre_link-14) | mod_auth_digest.c |
### 概述
這個模塊實現了HTTP摘要認證。由于尚未進行過廣泛的測試,因此標記為試驗模塊。
## 使用摘要認證
使用MD5摘要認證很簡單。簡單的安裝認證模塊后使用"`AuthType Digest`"和`AuthDigestProvider`代替普通的"`AuthType Basic`"和`AuthBasicProvider` ,再添加一個`AuthDigestDomain`指令包含至少是需要保護的區域的根URI。
可以使用`htdigest`工具來創建和添加(純文本)用戶列表文件。
### 示例:
```
<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](http://www.w3.org/Amaya/), [Konqueror](http://konqueror.kde.org/), [MS Internet Explorer 6](http://www.microsoft.com/windows/ie/)(使用查詢字符串時會失敗,參見"[配合 MS Internet Explorer 6 工作](#calibre_link-951)"), [Mozilla](http://www.mozilla.org), [Netscape 7](http://channels.netscape.com/ns/browsers/download.jsp), [Opera](http://www.opera.com/), [Safari](http://www.apple.com/safari/) 。而[lynx](http://lynx.isc.org/)**不支持**摘要認證。因為摘要認證尚未得到絕大多數瀏覽器的支持,你應當只將它應用在你可以控制用戶瀏覽器版本的場合。
## 配合 MS Internet Explorer 6 工作
Internet Explorer 6 的摘要認證實現有缺陷,也就是`GET`請求的查詢字符串與RFC規范并不兼容。有幾個途徑來解決這個問題。
第一個途徑就是使用`POST`代替`GET`來向服務器傳送數據。如果你的程序不會受到這種變化的影響,這是最簡單的方法。
從2.0.51版本開始,Apache還在環境變量`AuthDigestEnableQueryStringHack`中提供了一個工作區(workaround)。如果`AuthDigestEnableQueryStringHack`被打開,Apache將采取措施對付Internet Explorer 6 的bug ,將請求URI從摘要比較中移除。使用這個方法將需要類似如下的配置:
### 在MSIE6中使用摘要認證
```
BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
```
參見`BrowserMatch`指令以了解有條件的設置環境變量的更多細節。
## AuthDigestAlgorithm 指令
| [說明](#calibre_link-18) | 選擇在摘要認證中用于計算請求和應答的散列值的算法 |
| --- | --- |
| [語法](#calibre_link-19) | `AuthDigestAlgorithm MD5|MD5-sess` |
| [默認值](#calibre_link-24) | `AuthDigestAlgorithm MD5` |
| [作用域](#calibre_link-20) | directory, .htaccess |
| [覆蓋項](#calibre_link-66) | AuthConfig |
| [狀態](#calibre_link-21) | 實驗(X) |
| [模塊](#calibre_link-22) | mod_auth_digest |
`AuthDigestAlgorithm`指令選擇在摘要認證中用于計算請求和應答的散列值的算法。
`MD5-sess`算法當前尚未實現。
## AuthDigestDomain 指令
| [說明](#calibre_link-18) | 在同一保護區域中需要進行摘要認證的URI |
| --- | --- |
| [語法](#calibre_link-19) | `AuthDigestDomain URI [URI] ...` |
| [作用域](#calibre_link-20) | directory, .htaccess |
| [覆蓋項](#calibre_link-66) | AuthConfig |
| [狀態](#calibre_link-21) | 實驗(X) |
| [模塊](#calibre_link-22) | mod_auth_digest |
`AuthDigestDomain`指令用于指定一個或者多個在同一保護區域中需要進行摘要認證的URI(也就是使用相同的區域和用戶名/密碼信息)。這些被指定的URI只是前綴,也就是說客戶端將假定所有位于該URI"之下"的URI亦受到相同用戶名/密碼的保護。這些被指定的URI可以是絕對URI(也就是包含完整的協議、主機、端口等)或者相對URI。
這個指令_必須_總是被指定為至少包含被保護頁面的根URI。省略這個會導致客戶端為_每個請求_都發送授權頭,除了增加請求的字節大小外,如果`AuthDigestNcCheck`被設為"On",還會影響服務器的性能。
這里指定的URI可以分別指向不同的服務器,在這種情況下客戶端將會在這些服務器間共享用戶名和密碼信息,并且不會提醒用戶。
## AuthDigestNcCheck 指令
| [說明](#calibre_link-18) | Enables or disables checking of the nonce-count sent by the server |
| --- | --- |
| [語法](#calibre_link-19) | `AuthDigestNcCheck On|Off` |
| [默認值](#calibre_link-24) | `AuthDigestNcCheck Off` |
| [作用域](#calibre_link-20) | server config |
| [狀態](#calibre_link-21) | 實驗(X) |
| [模塊](#calibre_link-22) | mod_auth_digest |
目前尚未實現。
## AuthDigestNonceFormat 指令
| [說明](#calibre_link-18) | Determines how the nonce is generated |
| --- | --- |
| [語法](#calibre_link-19) | `AuthDigestNonceFormat format` |
| [作用域](#calibre_link-20) | directory, .htaccess |
| [覆蓋項](#calibre_link-66) | AuthConfig |
| [狀態](#calibre_link-21) | 實驗(X) |
| [模塊](#calibre_link-22) | mod_auth_digest |
目前尚未實現。
## AuthDigestNonceLifetime 指令
| [說明](#calibre_link-18) | 服務器nonce(當前值)的有效秒數 |
| --- | --- |
| [語法](#calibre_link-19) | `AuthDigestNonceLifetime seconds` |
| [默認值](#calibre_link-24) | `AuthDigestNonceLifetime 300` |
| [作用域](#calibre_link-20) | directory, .htaccess |
| [覆蓋項](#calibre_link-66) | AuthConfig |
| [狀態](#calibre_link-21) | 實驗(X) |
| [模塊](#calibre_link-22) | mod_auth_digest |
`AuthDigestNonceLifetime`指令控制服務器nonce(當前值)的有效秒數。當客戶端連接服務器時使用了一個過期的nonce(當前值),服務器將返回一個帶有"`stale=true`"的401錯誤(要求重新認證)。如果seconds小于等于"0",那么nonce(當前值)將永遠不會過期(強烈反對這么做)。一般這個值應當在30到120之間比較合理(最好不要小于10)。
## AuthDigestProvider 指令
| [說明](#calibre_link-18) | 設置該區域的(摘要)認證支持者(Provider) |
| --- | --- |
| [語法](#calibre_link-19) | `AuthDigestProvider provider-name [provider-name] ...` |
| [默認值](#calibre_link-24) | `AuthDigestProvider file` |
| [作用域](#calibre_link-20) | directory, .htaccess |
| [覆蓋項](#calibre_link-66) | AuthConfig |
| [狀態](#calibre_link-21) | 實驗(X) |
| [模塊](#calibre_link-22) | mod_auth_digest |
`AuthDigestProvider`指令設置了該區域的(摘要)認證支持者(Provider)。默認的`file`支持者由`mod_authn_file`模塊實現。必須確保所需的認證支持模塊存在于服務器中(靜態連接或DSO)。
能夠提供認證支持者(Provider)的模塊如下:`mod_authn_dbm`和`mod_authn_file` 。
## AuthDigestQop 指令
| [說明](#calibre_link-18) | 指定摘要認證的保護質量 |
| --- | --- |
| [語法](#calibre_link-19) | `AuthDigestQop none|auth|auth-int [auth|auth-int]` |
| [默認值](#calibre_link-24) | `AuthDigestQop auth` |
| [作用域](#calibre_link-20) | directory, .htaccess |
| [覆蓋項](#calibre_link-66) | AuthConfig |
| [狀態](#calibre_link-21) | 實驗(X) |
| [模塊](#calibre_link-22) | mod_auth_digest |
`AuthDigestQop`指令用于指定使用那個級別的<dfn class="calibre27">保護質量(quality-of-protection)</dfn>。`auth`將只進行認證(用戶名/密碼);`auth-int`除了認證以外還進行完整性校驗(實體的MD5值將被計算和檢查);`none`將使用舊的RFC-2069摘要算法(不包含完整性檢查);`auth`和`auth-int`可以同時指定,在這種情況下,瀏覽器將會自己選擇使用哪種一種。`none`不推薦使用。
`auth-int`目前尚未支持。
## AuthDigestShmemSize 指令
| [說明](#calibre_link-18) | 為了跟蹤客戶端而分配的共享內存字節數 |
| --- | --- |
| [語法](#calibre_link-19) | `AuthDigestShmemSize size` |
| [默認值](#calibre_link-24) | `AuthDigestShmemSize 1000` |
| [作用域](#calibre_link-20) | server config |
| [狀態](#calibre_link-21) | 實驗(X) |
| [模塊](#calibre_link-22) | mod_auth_digest |
`AuthDigestShmemSize`指令指定了服務器啟動時為了跟蹤客戶端而分配的共享內存字節數。注意,這個共享內存段不能設置為小于只跟蹤_一個_客戶端所需要的最小內存數量,這個最小數量取決于你的系統。如果你想知道這個最小值,你只要將`AuthDigestShmemSize`設為"`0`",然后讀取重啟Apache時返回的錯誤信息即可。
size通常按照字節計算,但是可以通過加上后綴"`K`"或"`M`"來按照KB或MB計算。比如,以下寫法都是一樣的:
```
AuthDigestShmemSize 1048576
AuthDigestShmemSize 1024K
AuthDigestShmemSize 1M
```
- Apache HTTP Server Version 2.2 文檔 [最后更新:2006年3月21日]
- 版本說明
- 從1.3升級到2.0
- 從2.0升級到2.2
- Apache 2.2 新特性概述
- Apache 2.0 新特性概述
- The Apache License, Version 2.0
- 參考手冊
- 編譯與安裝
- 啟動Apache
- 停止和重啟
- 配置文件
- 配置段(容器)
- 緩沖指南
- 服務器全局配置
- 日志文件
- 從URL到文件系統的映射
- 安全方面的提示
- 動態共享對象(DSO)支持
- 內容協商
- 自定義錯誤響應
- 地址和端口的綁定(Binding)
- 多路處理模塊
- Apache的環境變量
- Apache處理器的使用
- 過濾器(Filter)
- suEXEC支持
- 性能方面的提示
- URL重寫指南
- Apache虛擬主機文檔
- 基于主機名的虛擬主機
- 基于IP地址的虛擬主機
- 大批量虛擬主機的動態配置
- 虛擬主機示例
- 深入研究虛擬主機的匹配
- 文件描述符限制
- 關于DNS和Apache
- 常見問題
- 經常問到的問題
- Apache的SSL/TLS加密
- SSL/TLS高強度加密:緒論
- SSL/TLS高強度加密:兼容性
- SSL/TLS高強度加密:如何...?
- SSL/TLS Strong Encryption: FAQ
- 如何.../指南
- 認證、授權、訪問控制
- CGI動態頁面
- 服務器端包含入門
- .htaccess文件
- 用戶網站目錄
- 針對特定平臺的說明
- 在Microsoft Windows中使用Apache
- 在Microsoft Windows上編譯Apache
- Using Apache With Novell NetWare
- Running a High-Performance Web Server on HPUX
- The Apache EBCDIC Port
- 服務器和支持程序
- httpd - Apache超文本傳輸協議服務器
- ab - Apache HTTP服務器性能測試工具
- apachectl - Apache HTTP服務器控制接口
- apxs - Apache 擴展工具
- configure - 配置源代碼樹
- dbmmanage - 管理DBM格式的用戶認證文件
- htcacheclean - 清理磁盤緩沖區
- htdbm - 操作DBM密碼數據庫
- htdigest - 管理用于摘要認證的用戶文件
- httxt2dbm - 生成RewriteMap指令使用的dbm文件
- htpasswd - 管理用于基本認證的用戶文件
- logresolve - 解析Apache日志中的IP地址為主機名
- rotatelogs - 滾動Apache日志的管道日志程序
- suexec - 在執行外部程序之前切換用戶
- 其他程序
- 雜項文檔
- 與Apache相關的標準
- Apache模塊
- 描述模塊的術語
- 描述指令的術語
- Apache核心(Core)特性
- Apache MPM 公共指令
- Apache MPM beos
- Apache MPM event
- Apache MPM netware
- Apache MPM os2
- Apache MPM prefork
- Apache MPM winnt
- Apache MPM worker
- Apache模塊 mod_actions
- Apache模塊 mod_alias
- Apache模塊 mod_asis
- Apache模塊 mod_auth_basic
- Apache模塊 mod_auth_digest
- Apache模塊 mod_authn_alias
- Apache模塊 mod_authn_anon
- Apache模塊 mod_authn_dbd
- Apache模塊 mod_authn_dbm
- Apache模塊 mod_authn_default
- Apache模塊 mod_authn_file
- Apache模塊 mod_authnz_ldap
- Apache模塊 mod_authz_dbm
- Apache模塊 mod_authz_default
- Apache模塊 mod_authz_groupfile
- Apache模塊 mod_authz_host
- Apache模塊 mod_authz_owner
- Apache模塊 mod_authz_user
- Apache模塊 mod_autoindex
- Apache模塊 mod_cache
- Apache模塊 mod_cern_meta
- Apache模塊 mod_cgi
- Apache模塊 mod_cgid
- Apache模塊 mod_charset_lite
- Apache模塊 mod_dav
- Apache模塊 mod_dav_fs
- Apache模塊 mod_dav_lock
- Apache模塊 mod_dbd
- Apache模塊 mod_deflate
- Apache模塊 mod_dir
- Apache模塊 mod_disk_cache
- Apache模塊 mod_dumpio
- Apache模塊 mod_echo
- Apache模塊 mod_env
- Apache模塊 mod_example
- Apache模塊 mod_expires
- Apache模塊 mod_ext_filter
- Apache模塊 mod_file_cache
- Apache模塊 mod_filter
- Apache模塊 mod_headers
- Apache模塊 mod_ident
- Apache模塊 mod_imagemap
- Apache模塊 mod_include
- Apache模塊 mod_info
- Apache模塊 mod_isapi
- Apache模塊 mod_ldap
- Apache模塊 mod_log_config
- Apache模塊 mod_log_forensic
- Apache模塊 mod_logio
- Apache模塊 mod_mem_cache
- Apache模塊 mod_mime
- Apache模塊 mod_mime_magic
- Apache模塊 mod_negotiation
- Apache模塊 mod_nw_ssl
- Apache模塊 mod_proxy
- Apache模塊 mod_proxy_ajp
- Apache模塊 mod_proxy_balancer
- Apache模塊 mod_proxy_connect
- Apache模塊 mod_proxy_ftp
- Apache模塊 mod_proxy_http
- Apache模塊 mod_rewrite
- Apache模塊 mod_setenvif
- Apache模塊 mod_so
- Apache模塊 mod_speling
- Apache模塊 mod_ssl
- Apache模塊 mod_status
- Apache模塊 mod_suexec
- Apache模塊 mod_unique_id
- Apache模塊 mod_userdir
- Apache模塊 mod_usertrack
- Apache模塊 mod_version
- Apache模塊 mod_vhost_alias
- Developer Documentation for Apache 2.0
- Apache 1.3 API notes
- Debugging Memory Allocation in APR
- Documenting Apache 2.0
- Apache 2.0 Hook Functions
- Converting Modules from Apache 1.3 to Apache 2.0
- Request Processing in Apache 2.0
- How filters work in Apache 2.0
- Apache 2.0 Thread Safety Issues
- 詞匯和索引
- 詞匯表
- 指令索引
- 指令速查
- 模塊索引
- 站點導航