Apache HTTP服务器V2.0

| 说明 | 使用存储在文本文件中的用户名和密码来执行基本的用户认证 |
|---|---|
| 状态 | Base |
| 模块名 | auth_module |
| 源文件 | mod_auth.c |
| 兼容性 | 只在2.1版本以前可用 |
此模块提供了对HTTP基本认证的支持,它在明文的密码和组文件中查找用户,从而对访问进行限制。mod_auth_dbm提供了类似的但更具伸缩性的功能;mod_auth_digest则提供了对HTTP摘要认证的支持。
| 说明 | 指定是否将认证和授权操作交由更底层的模块来处理 |
|---|---|
| 语法 | AuthAuthoritative On|Off |
| 默认值 | AuthAuthoritative On |
| 作用域 | directory, .htaccess |
| 覆盖项 | AuthConfig |
| 状态 | Base |
| 模块 | mod_auth |
在明确地设置AuthAuthoritative指令为"Off"的情况下,如果提供的userID不能与任何userID或rule相匹配,则认证和授权操作均转交更底层的模块来处理(在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的数据库要容易一些。必须确保AuthUserFile和AuthGroupFile存放在在WEB服务器所在路径以外的目录中,千万不要放在它们所保护的目录中,否则,AuthUserFile和AuthGroupFile可能会被客户端下载。
| 说明 | 设定一个包含用于执行用户认证的用户组列表的纯文本文件名 |
|---|---|
| 语法 | AuthGroupFile file-path |
| 作用域 | directory, .htaccess |
| 覆盖项 | AuthConfig |
| 状态 | Base |
| 模块 | mod_auth |
AuthGroupFile指令设定一个文本文件的名称,这个纯文本文件包含用于执行用户认证的用户组列表。File-path是存放用户组列表文件的路径。如果不是绝对路径,则看着相对于ServerRoot的相对路径。
这个用户组列表文件每行含一个用户组名称,后跟一个冒号,再跟该组用户的用户名称,用户名间以空格分隔。
mygroup: bob joe anne
注意搜索很大的文本文件是非常慢的;AuthDBMGroupFile提供了更出色的性能。
确保AuthGroupFile文件存放在WEB服务器所在路径以外的目录中,千万不要放在它所保护的目录中,否则AuthGroupFile件可能会被客户端下载。
| 说明 | 设定一个含有认证使用的用户名/密码列表的纯文本文件 |
|---|---|
| 语法 | 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文件可能会被客户端下载。