Apache HTTP服务器V2.0

| 说明 | 使用MD5摘要进行用户身份验证 |
|---|---|
| 状态 | Experimental |
| 模块名 | auth_digest_module |
| 源文件 | mod_auth_digest.c |
这个模块实现了HTTP摘要认证。由于尚未进行过广泛的测试,因此标记为试验模块。
使用MD5摘要认证很简单。简单的安装认证模块后使用"AuthType Digest"和AuthDigestFile代替普通的"AuthType Basic"和AuthUserFile,然后将所有AuthGroupFile替换为AuthDigestGroupFile,再添加一个AuthDigestDomain指令包含至少是需要保护的区域的根URI。
可以使用htdigest工具来创建和添加纯文本的用户列表文件。
<Location /private/>
AuthType Digest
AuthName "private area"
AuthDigestDomain /private/ http://mirror.my.dom/private2/
AuthDigestFile /web/auth/.digest_pw
Require valid-user
</Location>
IE6的摘要认证实现有缺陷,也就是GET请求的查询字符串与RFC规范并不兼容。有几个途径来解决这个问题。
第一个途径就是使用POST代替GET来向服务器传送数据。如果你的程序不会受到这种变化的影响,这是最简单的方法。
从2.0.51版本开始,Apache还在环境变量AuthDigestEnableQueryStringHack中提供了一个工作区(workaround)。如果AuthDigestEnableQueryStringHack被打开,Apache将采取措施对付IE6的bug,将请求URI从摘要比较中移除。使用这个方法将需要类似如下的配置:
BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
参见BrowserMatch指令以了解有条件的设置环境变量的更多细节。
| 说明 | 选择在摘要认证中用于计算请求和应答的散列值的算法 |
|---|---|
| 语法 | AuthDigestAlgorithm MD5|MD5-sess |
| 默认值 | AuthDigestAlgorithm MD5 |
| 作用域 | directory, .htaccess |
| 覆盖项 | AuthConfig |
| 状态 | Experimental |
| 模块 | mod_auth_digest |
AuthDigestAlgorithm指令选择在摘要认证中用于计算请求和应答的散列值的算法。
MD5-sess 算法当前尚未实现。| 说明 | 在同一保护区域中需要进行摘要认证的URI |
|---|---|
| 语法 | AuthDigestDomain URI [URI] ... |
| 作用域 | directory, .htaccess |
| 覆盖项 | AuthConfig |
| 状态 | Experimental |
| 模块 | mod_auth_digest |
AuthDigestDomain指令用于指定一个或者多个在同一保护区域中需要进行摘要认证的URI(也就是使用相同的区域和用户名/密码信息)。这些被指定的URI只是前缀,也就是说客户端将假定所有位于该URI"之下"的URI亦受到同样用户名/密码的保护。这些被指定的URI可以是绝对URI(也就是包含完整的协议、主机、端口等)或者相对URI。
这个指令必须总是被指定为至少包含被保护页面的根URI。省略这个会导致客户端为每个请求都发送授权头,除了增加请求的字节大小外,如果AuthDigestNcCheck被设为"On",还会影响服务器的性能。
这里指定的URI可以分别指向不同的服务器,在这种情况下客户端将会在这些服务器间共享用户名和密码信息,并且不会提醒用户。
| 说明 | 设定一个含有摘要认证使用的用户名/密码(已加密)列表的纯文本文件 |
|---|---|
| 语法 | AuthDigestFile file-path |
| 作用域 | directory, .htaccess |
| 覆盖项 | AuthConfig |
| 状态 | Experimental |
| 模块 | mod_auth_digest |
AuthDigestFile指令设定一个含有摘要认证使用的用户名/密码(已加密)列表的纯文本文件。File-path 必须是绝对路径。
这个包含用户名/密码的摘要纯文本文件使用了一个特殊的格式,可以用"support"目录下的htdigest工具来创建。
| 说明 | 设定一个包含用于执行摘要认证的用户组列表的纯文本文件名 |
|---|---|
| 语法 | AuthDigestGroupFile file-path |
| 作用域 | directory, .htaccess |
| 覆盖项 | AuthConfig |
| 状态 | Experimental |
| 模块 | mod_auth_digest |
AuthDigestGroupFile指令设定一个包含用于执行摘要认证的用户组和组中所含用户名列表的纯文本文件。File-path 必须是绝对路径。
组文件中的每一行都包含一个"组名:用户名1 用户名2 用户名3 ... "格式的组列表(组名和用户名之间用冒号隔开,用户名之间用空格隔开):
mygroup: bob joe anne
不要将这个文件弄的太大,搜索太大的文件效率很低。
请确保AuthGroupFile存贮在Web文档树之外,亦不要将它放置在它说保护的目录中。否则,客户可能会下载它。
| 说明 | Enables or disables checking of the nonce-count sent by the server |
|---|---|
| 语法 | AuthDigestNcCheck On|Off |
| 默认值 | AuthDigestNcCheck Off |
| 作用域 | server config |
| 状态 | Experimental |
| 模块 | mod_auth_digest |
| 说明 | Determines how the nonce is generated |
|---|---|
| 语法 | AuthDigestNonceFormat format |
| 作用域 | directory, .htaccess |
| 覆盖项 | AuthConfig |
| 状态 | Experimental |
| 模块 | mod_auth_digest |
| 说明 | 服务器nonce(当前值)的有效秒数 |
|---|---|
| 语法 | AuthDigestNonceLifetime seconds |
| 默认值 | AuthDigestNonceLifetime 300 |
| 作用域 | directory, .htaccess |
| 覆盖项 | AuthConfig |
| 状态 | Experimental |
| 模块 | mod_auth_digest |
AuthDigestNonceLifetime指令控制服务器nonce(当前值)的有效秒数。当客户端连接服务器时使用了一个过期的nonce(当前值),服务器将返回一个带有"stale=true"的401错误(要求重新认证)。如果seconds等于0,那么nonce(当前值)将永远不会过期(强烈反对这么做)。一般这个值应当在30到120之间比较合理。
| 说明 | 指定摘要认证的保护质量 |
|---|---|
| 语法 | AuthDigestQop none|auth|auth-int [auth|auth-int] |
| 默认值 | AuthDigestQop auth |
| 作用域 | directory, .htaccess |
| 覆盖项 | AuthConfig |
| 状态 | Experimental |
| 模块 | mod_auth_digest |
AuthDigestQop指令用于指定使用那个级别的保护质量。auth将只进行认证(用户名/密码);auth-int除了认证以外还进行完整性校验(实体的MD5值将被计算和检查);none旧的RFC-2069摘要算法(不包含完整性检查);auth和auth-int可以同时指定,在这种情况下,浏览器将会自己选择使用哪种一种。none不推荐使用。
auth-int目前尚未支持。| 说明 | 为了跟踪客户端而分配的共享内存数 |
|---|---|
| 语法 | AuthDigestShmemSize size |
| 默认值 | AuthDigestShmemSize 1000 |
| 作用域 | server config |
| 状态 | Experimental |
| 模块 | mod_auth_digest |
AuthDigestShmemSize指令指定了服务器启动时为了跟踪客户端而分配的共享内存数。注意,这个共享内存段不能设置为小于只跟踪一个客户端所需要的最小内存数量,这个最小数量取决于你的系统。如果你想知道这个最小值,你只要将AuthDigestShmemSize设为"0",然后读取重启Apache时返回的错误信息即可。
size通常按照字节计算,但是可以通过加上后缀"K"或者"M"来按照KB或MB计算。比如,以下写法都是一样的:
AuthDigestShmemSize 1048576
AuthDigestShmemSize 1024K
AuthDigestShmemSize 1M