Apache HTTP 服务器版本 2.4
描述 | 基本 HTTP 身份验证 |
---|---|
状态 | 基础 |
模块标识符 | auth_basic_module |
源文件 | mod_auth_basic.c |
兼容性 | 在 Apache 2.1 及更高版本中可用 |
此模块允许使用 HTTP 基本身份验证来限制访问,方法是在给定的提供程序中查找用户。HTTP 摘要身份验证由 mod_auth_digest
提供。此模块通常应与至少一个身份验证模块(如 mod_authn_file
)和一个授权模块(如 mod_authz_user
)结合使用。
描述 | 设置是否将授权和身份验证传递给更低级别的模块 |
---|---|
语法 | AuthBasicAuthoritative On|Off |
默认值 | AuthBasicAuthoritative On |
上下文 | directory, .htaccess |
覆盖 | AuthConfig |
状态 | 基础 |
模块 | mod_auth_basic |
通常,在 AuthBasicProvider
中列出的每个授权模块都会尝试验证用户,如果在任何提供程序中都找不到用户,则会拒绝访问。将 AuthBasicAuthoritative
指令显式设置为 Off
允许在没有用户 ID 或规则与提供的用户 ID 匹配的情况下,将身份验证和授权传递给其他非提供程序基于的模块。这只有在将 mod_auth_basic
与未配置 AuthBasicProvider
指令的第三方模块结合使用时才需要。当使用此类模块时,处理顺序由模块的源代码确定,不可配置。
描述 | 使用给定的用户名和密码表达式伪造基本身份验证 |
---|---|
语法 | AuthBasicFake off|username [password] |
默认值 | 无 |
上下文 | directory, .htaccess |
覆盖 | AuthConfig |
状态 | 基础 |
模块 | mod_auth_basic |
兼容性 | Apache HTTP 服务器 2.4.5 及更高版本 |
指定的用户名和密码将组合成一个授权标头,该标头将传递到 Web 服务器后面的服务器或服务。用户名和密码字段都使用 表达式解析器 进行解释,这允许根据请求参数设置用户名和密码。
如果未指定密码,则将使用默认值“password”。要为 URL 空间禁用伪造的基本身份验证,请指定“AuthBasicFake off”。
在此示例中,我们将固定用户名和密码传递给后端服务器。
<Location "/demo"> AuthBasicFake demo demopass </Location>
在此示例中,我们将从客户端证书中提取的电子邮件地址传递,扩展了 SSLOptions
指令中 FakeBasicAuth 选项的功能。与 FakeBasicAuth 选项一样,密码设置为固定字符串“password”。
<Location "/secure"> AuthBasicFake "%{SSL_CLIENT_S_DN_Email}" </Location>
扩展上面的示例,我们通过使用固定密码短语对电子邮件地址进行哈希处理,并将哈希值传递给后端服务器来生成密码。这可用于进入不支持客户端证书的旧系统。
<Location "/secure"> AuthBasicFake "%{SSL_CLIENT_S_DN_Email}" "%{sha1:passphrase-%{SSL_CLIENT_S_DN_Email}}" </Location>
<Location "/public"> AuthBasicFake off </Location>
描述 | 为该位置设置身份验证提供程序 |
---|---|
语法 | AuthBasicProvider provider-name [provider-name] ... |
默认值 | AuthBasicProvider file |
上下文 | directory, .htaccess |
覆盖 | AuthConfig |
状态 | 基础 |
模块 | mod_auth_basic |
AuthBasicProvider
指令设置用于为该位置验证用户的提供程序。默认的 file
提供程序由 mod_authn_file
模块实现。确保所选提供程序模块存在于服务器中。
<Location "/secure"> AuthType basic AuthName "private area" AuthBasicProvider dbm AuthDBMType SDBM AuthDBMUserFile "/www/etc/dbmpasswd" Require valid-user </Location>
按顺序查询提供程序,直到提供程序找到与请求的用户名匹配的项,此时该提供程序将尝试检查密码。无法验证密码不会导致将控制权传递给后续提供程序。
提供程序由 mod_authn_dbm
、mod_authn_file
、mod_authn_dbd
、mod_authnz_ldap
和 mod_authn_socache
实现。
描述 | 针对身份验证提供程序检查密码,就好像摘要身份验证生效而不是基本身份验证一样。 |
---|---|
语法 | AuthBasicUseDigestAlgorithm MD5|Off |
默认值 | AuthBasicUseDigestAlgorithm Off |
上下文 | directory, .htaccess |
覆盖 | AuthConfig |
状态 | 基础 |
模块 | mod_auth_basic |
兼容性 | Apache HTTP 服务器 2.4.7 及更高版本 |
通常,当使用基本身份验证时,在 AuthBasicProvider
中列出的提供程序会尝试通过检查其数据存储以查找匹配的用户名和关联密码来验证用户。存储的密码通常是加密的,但不一定如此;每个提供程序可以选择自己的密码存储方案。
当使用 AuthDigestProvider
和摘要身份验证时,提供程序会执行类似的检查以在其数据存储中找到匹配的用户名。但是,与基本身份验证情况不同,与每个存储的用户名关联的值必须是使用用户名、领域名称和密码组成的加密字符串。(有关此加密字符串格式的更多详细信息,请参阅 RFC 2617,第 3.2.2.2 节。)
由于基本身份验证和摘要身份验证之间存储值的差异,从摘要身份验证转换为基本身份验证通常需要为所有用户分配新密码,因为无法从摘要身份验证密码存储方案中恢复其现有密码。支持摘要身份验证的提供程序。
将 AuthBasicUseDigestAlgorithm
指令设置为 MD5
将导致使用与摘要身份验证相同的加密格式检查用户的基本身份验证密码。首先,使用 MD5 对由用户名、领域名称和密码组成的字符串进行哈希处理;然后,用户名和此加密字符串将传递给 AuthBasicProvider
中列出的提供程序,就好像 AuthType
设置为 Digest
并且摘要身份验证生效一样。
通过使用 AuthBasicUseDigestAlgorithm
,网站可以从摘要身份验证切换到基本身份验证,而无需要求用户分配新密码。
AuthBasicUseDigestAlgorithm
设置为 MD5
时,只有支持摘要身份验证的提供程序才能验证用户。使用其他提供程序会导致错误响应,并且客户端将被拒绝访问。