Apache HTTP Server 版本 2.4
描述 | 使用 MD5 Digest 身份验证进行用户身份验证 |
---|---|
状态 | 扩展 |
模块标识符 | auth_digest_module |
源文件 | mod_auth_digest.c |
此模块实现 HTTP Digest 身份验证 (RFC2617),并提供 mod_auth_basic
的替代方案,其中密码不会以明文形式传输。但是,这并不会带来比基本身份验证显著的安全性优势。另一方面,与基本身份验证相比,服务器上的密码存储安全性要低得多。因此,使用基本身份验证并使用 mod_ssl
对整个连接进行加密是一个更好的选择。
要使用 MD5 Digest 身份验证,请按照以下示例配置要保护的位置
<Location "/private/"> AuthType Digest AuthName "private area" AuthDigestDomain "/private/" "http://mirror.my.dom/private2/" AuthDigestProvider file AuthUserFile "/web/auth/.digest_pw" Require valid-user </Location>
AuthDigestDomain
应列出将受此配置保护的位置。
在 AuthUserFile
指令中引用的密码文件可以使用 htdigest
工具创建和管理。
Digest 身份验证旨在比基本身份验证更安全,但不再满足该设计目标。中间人攻击者可以轻松地强制浏览器降级为基本身份验证。即使是被动窃听者也可以使用当今的图形硬件暴力破解密码,因为 Digest 身份验证使用的哈希算法速度太快。另一个问题是服务器上的密码存储不安全。被盗的 htdigest 文件的内容可以直接用于 Digest 身份验证。因此,强烈建议使用 mod_ssl
对整个连接进行加密。
mod_auth_digest
仅在 APR 支持共享内存的平台上才能正常工作。
描述 | 选择用于在 Digest 身份验证中计算质询和响应哈希的算法 |
---|---|
语法 | AuthDigestAlgorithm MD5|MD5-sess |
默认值 | AuthDigestAlgorithm MD5 |
上下文 | directory, .htaccess |
覆盖 | AuthConfig |
状态 | 扩展 |
模块 | mod_auth_digest |
AuthDigestAlgorithm
指令选择用于计算质询和响应哈希的算法。
MD5-sess
尚未正确实现。描述 | 对于 Digest 身份验证位于同一保护空间中的 URI |
---|---|
语法 | AuthDigestDomain URI [URI] ... |
上下文 | directory, .htaccess |
覆盖 | AuthConfig |
状态 | 扩展 |
模块 | mod_auth_digest |
AuthDigestDomain
指令允许您指定一个或多个 URI,这些 URI 位于同一保护空间中(即使用相同的域和用户名/密码信息)。指定的 URI 是前缀;客户端将假设所有“位于”这些 URI 之下的 URI 也受相同的用户名/密码保护。URI 可以是绝对 URI(即包括方案、主机、端口等)或相对 URI。
此指令应该始终指定并包含此空间的根 URI(集)。省略这样做会导致客户端为发送到此服务器的每个请求发送 Authorization 标头。
指定的 URI 也可以指向不同的服务器,在这种情况下,客户端(理解这一点)将在多个服务器之间共享用户名/密码信息,而无需每次都提示用户。
描述 | 服务器 nonce 有效期多长 |
---|---|
语法 | AuthDigestNonceLifetime seconds |
默认值 | AuthDigestNonceLifetime 300 |
上下文 | directory, .htaccess |
覆盖 | AuthConfig |
状态 | 扩展 |
模块 | mod_auth_digest |
AuthDigestNonceLifetime
指令控制服务器 nonce 有效期多长。当客户端使用已过期的 nonce 联系服务器时,服务器将返回带有 stale=true
的 401。如果 seconds 大于 0,则它指定 nonce 有效的时间量;这可能永远不应该设置为小于 10 秒。如果 seconds 小于 0,则 nonce 永远不会过期。
描述 | 为该位置设置身份验证提供程序 |
---|---|
语法 | AuthDigestProvider provider-name [provider-name] ... |
默认值 | AuthDigestProvider file |
上下文 | directory, .htaccess |
覆盖 | AuthConfig |
状态 | 扩展 |
模块 | mod_auth_digest |
AuthDigestProvider
指令设置哪个提供程序用于对该位置的用户进行身份验证。默认的 file
提供程序由 mod_authn_file
模块实现。确保服务器中存在所选的提供程序模块。
有关提供程序,请参阅 mod_authn_dbm
、mod_authn_file
、mod_authn_dbd
和 mod_authn_socache
。
描述 | 确定在 Digest 身份验证中使用的保护质量 |
---|---|
语法 | AuthDigestQop none|auth|auth-int [auth|auth-int] |
默认值 | AuthDigestQop auth |
上下文 | directory, .htaccess |
覆盖 | AuthConfig |
状态 | 扩展 |
模块 | mod_auth_digest |
AuthDigestQop
指令确定要使用的保护质量。auth
仅执行身份验证(用户名/密码);auth-int
是身份验证加完整性检查(还会计算和检查实体的 MD5 哈希);none
将导致模块使用旧的 RFC-2069 Digest 算法(不包括完整性检查)。可以同时指定 auth
和 auth-int
,在这种情况下,浏览器将选择使用哪一个。none
仅应在浏览器由于某种原因不喜欢它收到的质询时使用。
auth-int
尚未实现。描述 | 为跟踪客户端分配的共享内存量 |
---|---|
语法 | AuthDigestShmemSize size |
默认值 | AuthDigestShmemSize 1000 |
上下文 | 服务器配置 |
状态 | 扩展 |
模块 | mod_auth_digest |
AuthDigestShmemSize
指令定义了在服务器启动时分配的共享内存量,用于跟踪客户端。请注意,共享内存段不能设置为小于跟踪至少一个客户端所需的内存空间。此值取决于您的系统。如果您想找出确切的值,您可以简单地将 AuthDigestShmemSize
设置为 0
的值,并在尝试启动服务器后读取错误消息。
size 通常以字节表示,但您可以在数字后面加上 K
或 M
来将您的值表示为 KB 或 MB。例如,以下指令都等效
AuthDigestShmemSize 1048576 AuthDigestShmemSize 1024K AuthDigestShmemSize 1M