<-
Apache > HTTP服务器 > 文档 > V2.0 > 模块

Apache模块 mod_auth

说明使用存储在文本文件中的用户名和密码来执行基本的用户认证
状态Base
模块名auth_module
源文件mod_auth.c
兼容性 只在2.1版本以前可用

概述

此模块提供了对HTTP基本认证的支持,它在明文的密码和组文件中查找用户,从而对访问进行限制。mod_auth_dbm提供了类似的但更具伸缩性的功能;mod_auth_digest则提供了对HTTP摘要认证的支持。

top

AuthAuthoritative 指令

说明指定是否将认证和授权操作交由更底层的模块来处理
语法AuthAuthoritative On|Off
默认值AuthAuthoritative On
作用域directory, .htaccess
覆盖项AuthConfig
状态Base
模块mod_auth

在明确地设置AuthAuthoritative指令为"Off"的情况下,如果提供的userID不能与任何userIDrule相匹配,则认证和授权操作均转交更底层的模块来处理(在modules.c文件中定义的);而如果指定了一个userID和/或rule,则执行常规的密码和访问检查,如果检查失败则反馈一个"Authentication Required"信息。

因此,当一个userID出现在不止一个模块的数据库中时,或者当一个有效的Require指令同时作用于不止一个模块时,只有第一个模块会执行检查,而无论AuthAuthoritative如何设置,再也没有后续操作了。

此指令常用于和一个使用数据库的模块的连接,如mod_auth_dbm, mod_auth_msql, mod_auth_anon,这些模块提供了对海量用户进行认证检查的支持。但是,少数(网管)相关的访问可以直达拥有良好保护的AuthUserFile的较底层。

默认情况下,控制不会被转交给底层,一个未知的userID或rule会导致一个"Authentication Required"应答。不设置此指令,可以使系统较安全,并符合NCSA的规范。

安全

由于.htaccess文件可能隐含地允许用户执行认证控制的向下传递,对此必须慎重考虑,是否的确如你所愿。通常,保护一个单一的.htpasswd文件比保护像mSQL的数据库要容易一些。必须确保AuthUserFileAuthGroupFile存放在在WEB服务器所在路径以外的目录中,千万不要放在它们所保护的目录中,否则,AuthUserFileAuthGroupFile可能会被客户端下载。

top

AuthGroupFile 指令

说明 设定一个包含用于执行用户认证的用户组列表的纯文本文件名
语法AuthGroupFile file-path
作用域directory, .htaccess
覆盖项AuthConfig
状态Base
模块mod_auth

AuthGroupFile指令设定一个文本文件的名称,这个纯文本文件包含用于执行用户认证的用户组列表。File-path是存放用户组列表文件的路径。如果不是绝对路径,则看着相对于ServerRoot的相对路径。

这个用户组列表文件每行含一个用户组名称,后跟一个冒号,再跟该组用户的用户名称,用户名间以空格分隔。

例子:

mygroup: bob joe anne

注意搜索很大的文本文件是非常慢的;AuthDBMGroupFile提供了更出色的性能。

安全

确保AuthGroupFile文件存放在WEB服务器所在路径以外的目录中,千万不要放在它所保护的目录中,否则AuthGroupFile件可能会被客户端下载。

top

AuthUserFile 指令

说明 设定一个含有认证使用的用户名/密码列表的纯文本文件
语法AuthUserFile file-path
作用域directory, .htaccess
覆盖项AuthConfig
状态Base
模块mod_auth

AuthUserFile指令设定一个纯文本文件的名称,其中含用于认证的用户名/密码列表。File-path 是存放用户文件的路径。如果不是绝对路径(也就是说,如果不是以斜杠开始的),则是相对ServerRoot的相对路径。

用户文件的每一行包含一个用户名,后跟一个冒号,再跟一个加密过的密码。如果文件中含有相同用户名,mod_auth模块会用排列在最前面的那行定义来验证该用户的密码。

在二进制文件安装包中附带的,或"src/support"中的命令行工具htpasswd是用来维护密码文件的。参阅手册页面以获得更详细的说明。简单的说:

以一个初始帐户"username"创建一个密码文件"Filename"。它会提示输入密码:

htpasswd -c Filename username

增加或修改密码文件"Filename"中的帐号"username2":

htpasswd Filename username2

注意搜索很大的文本文件是非常慢的;应该使用AuthDBMUserFile来替代它。

安全

确保AuthUserFile文件存放在WEB服务器所在路径以外的目录中,千万不要放在它所保护的目录中,否则AuthUserFile文件可能会被客户端下载。