<-
Apache > HTTP 服务器 > 文档 > 版本 2.4 > 模块

Apache 模块 mod_auth_basic

可用语言:  en  |  fr  |  ja  |  ko 

描述基本 HTTP 身份验证
状态基础
模块标识符auth_basic_module
源文件mod_auth_basic.c
兼容性在 Apache 2.1 及更高版本中可用

摘要

此模块允许使用 HTTP 基本身份验证来限制访问,方法是在给定的提供程序中查找用户。HTTP 摘要身份验证由 mod_auth_digest 提供。此模块通常应与至少一个身份验证模块(如 mod_authn_file)和一个授权模块(如 mod_authz_user)结合使用。

Support Apache!

指令

错误修复清单

另请参阅

top

AuthBasicAuthoritative 指令

描述设置是否将授权和身份验证传递给更低级别的模块
语法AuthBasicAuthoritative On|Off
默认值AuthBasicAuthoritative On
上下文directory, .htaccess
覆盖AuthConfig
状态基础
模块mod_auth_basic

通常,在 AuthBasicProvider 中列出的每个授权模块都会尝试验证用户,如果在任何提供程序中都找不到用户,则会拒绝访问。将 AuthBasicAuthoritative 指令显式设置为 Off 允许在没有用户 ID规则与提供的用户 ID 匹配的情况下,将身份验证和授权传递给其他非提供程序基于的模块。这只有在将 mod_auth_basic 与未配置 AuthBasicProvider 指令的第三方模块结合使用时才需要。当使用此类模块时,处理顺序由模块的源代码确定,不可配置。

top

AuthBasicFake 指令

描述使用给定的用户名和密码表达式伪造基本身份验证
语法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>
top

AuthBasicProvider 指令

描述为该位置设置身份验证提供程序
语法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_dbmmod_authn_filemod_authn_dbdmod_authnz_ldapmod_authn_socache 实现。

top

AuthBasicUseDigestAlgorithm 指令

描述针对身份验证提供程序检查密码,就好像摘要身份验证生效而不是基本身份验证一样。
语法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 时,只有支持摘要身份验证的提供程序才能验证用户。使用其他提供程序会导致错误响应,并且客户端将被拒绝访问。

可用语言:  en  |  fr  |  ja  |  ko 

top

评论

注意
这不是问答部分。此处发布的评论应指向有关改进文档或服务器的建议,如果这些建议已实施或被认为无效/偏离主题,则可能会被我们的版主删除。有关如何管理 Apache HTTP 服务器的问题应直接发送到我们的 IRC 频道 #httpd(在 Libera.chat 上)或发送到我们的 邮件列表