描述: | 基本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 |
内容: | 目录.htaccess |
覆写: | 验证配置 |
状态: | 基础 |
模块: | mod_auth_basic |
通常,列出的每个授权模块AuthBasicProvider
都会尝试验证用户,如果在任何提供程序中都找不到该用户,则将拒绝访问。如果没有用户ID或
与提供的用户ID匹配的规则,则将AuthBasicAuthoritative
指令显式设置
为Off
允许将身份验证和授权传递给其他基于非提供商的模块。仅当与未使用
伪指令配置的第三方模块结合使用时,才应该这样做。使用此类模块时,处理顺序在模块的源代码中确定,并且不可配置。mod_auth_basic
AuthBasicProvider
描述: | 使用给定的用户名和密码表达式进行假基本认证 |
---|---|
句法: | AuthBasicFake off|username [password] |
默认: | none |
内容: | 目录.htaccess |
覆写: | 验证配置 |
状态: | 基础 |
模块: | mod_auth_basic |
兼容性: | Apache HTTP Server 2.4.5及更高版本 |
指定的用户名和密码将合并到一个Authorization标头中,该标头将传递到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 |
内容: | 目录.htaccess |
覆写: | 验证配置 |
状态: | 基础 |
模块: | 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 |
内容: | 目录.htaccess |
覆写: | 验证配置 |
状态: | 基础 |
模块: | mod_auth_basic |
兼容性: | Apache HTTP Server 2.4.7和更高版本 |
通常,使用基本身份验证时,列出的提供程序
AuthBasicProvider
试图通过检查其数据存储中是否存在匹配的用户名和关联的密码来验证用户。存储的密码通常是加密的,但不一定要加密;每个提供商可以选择自己的密码存储方案。
使用AuthDigestProvider
“摘要式身份验证”时,提供程序会执行类似的检查,以在其数据存储中找到匹配的用户名。但是,与“基本身份验证”情况不同,与每个存储的用户名关联的值必须是由用户名,领域名称和密码组成的加密字符串。(有关此加密字符串使用的格式的更多详细信息
,请参阅
RFC 2617,第3.2.2.2节。)
由于基本身份验证和摘要身份验证之间存储值的差异,从摘要身份验证转换为基本身份验证通常要求为所有用户分配新密码,因为他们现有的密码无法从强加给提供者的密码存储方案中恢复支持摘要式身份验证。
将AuthBasicUseDigestAlgorithm
指令设置为MD5
将导致使用与摘要式身份验证相同的加密格式来检查用户的基本身份验证密码。首先,由用户名,领域名称和密码组成的字符串用MD5进行哈希处理;然后将用户名和此加密的字符串传递给列出的提供程序,
AuthBasicProvider
就像
AuthType
设置为一样,Digest
并且摘要身份验证已生效。
通过使用AuthBasicUseDigestAlgorithm
站点,可以从摘要身份验证切换为基本身份验证,而无需为用户分配新密码。
AuthBasicUseDigestAlgorithm
设置为MD5
。使用其他提供程序将导致错误响应,并且客户端将被拒绝访问。