Apache 模块 mod_auth_digest

Description:使用 MD5 摘要认证的用户认证
Status:Extension
Module Identifier:auth_digest_module
Source File:mod_auth_digest.c

Summary

此模块实现 HTTP 摘要验证(RFC2617),并提供mod_auth_basic的替代方式,其中密码不以明文形式传输。但是,与基本身份验证相比,这确实不会带来显着的安全优势。另一方面,摘要身份验证比基本身份验证在服务器上存储密码的安全性要差得多。因此,使用基本身份验证并使用mod_ssl加密整个连接是一个更好的选择。

使用摘要式身份验证

要使用 MD5 摘要式身份验证,请按照以下示例所示配置要保护的位置:

Example:

<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应列出受此配置保护的位置。

可以使用htdigest工具创建和 ManagementAuthUserFile指令中引用的密码文件。

Note

摘要式身份验证的目的是比基本身份验证更安全,但不再满足该设计目标。中间人攻击者可以轻易迫使浏览器降级为基本身份验证。甚至是被动的窃听者也可以使用当今的图形硬件来强行破解密码,因为摘要身份验证使用的哈希算法太快了。另一个问题是服务器上密码的存储不安全。可以将被盗的 htdigest 文件的内容直接用于摘要身份验证。因此,强烈建议使用mod_ssl加密整个连接。

mod_auth_digest仅在 APR 支持共享内存的平台上正常工作。

AuthDigestAlgorithm Directive

Description:选择用于在摘要身份验证中计算质询和响应哈希值的算法
Syntax:AuthDigestAlgorithm MD5|MD5-sess
Default:AuthDigestAlgorithm MD5
Context:directory, .htaccess
Override:AuthConfig
Status:Extension
Module:mod_auth_digest

AuthDigestAlgorithm指令选择用于计算质询和响应哈希值的算法。

Note

MD5-sess尚未正确实现。

AuthDigestDomain Directive

Description:处于摘要保护身份验证的相同保护空间中的 URI
Syntax:AuthDigestDomain URI [URI] ...
Context:directory, .htaccess
Override:AuthConfig
Status:Extension
Module:mod_auth_digest

AuthDigestDomain指令允许您指定一个或多个位于相同保护空间中的 URI(使用相同的领域和用户名/密码信息)。指定的 URI 是前缀;Client 端将假定所有“以下” URI 也受相同的用户名/密码保护。 URI 可以是绝对 URI(,即包括方案,主机,端口等的),也可以是相对 URI。

始终应指定此指令,并且至少应包含此空间的(一组)根 URI。忽略此操作将导致 Client 端为发送到此服务器的“每个请求”发送授权 Headers。

指定的 URI 也可以指向不同的服务器,在这种情况下,Client 端(理解这一点)将在多个服务器之间共享用户名/密码信息,而无需每次都提示用户。

AuthDigestNonceLifetime Directive

Description:服务器随机数有效时间
Syntax:AuthDigestNonceLifetime seconds
Default:AuthDigestNonceLifetime 300
Context:directory, .htaccess
Override:AuthConfig
Status:Extension
Module:mod_auth_digest

AuthDigestNonceLifetime指令控制服务器随机数有效的时间。当 Client 端使用过期的随机数联系服务器时,服务器将通过stale=true发送回 401.如果秒数大于 0,则它指定随机数有效的时间;可能永远不应将其设置为少于 10 秒。如果秒小于 0,则随机数永不过期。

AuthDigestProvider Directive

Description:设置此位置的身份验证提供程序
Syntax:AuthDigestProvider provider-name [provider-name] ...
Default:AuthDigestProvider file
Context:directory, .htaccess
Override:AuthConfig
Status:Extension
Module:mod_auth_digest

AuthDigestProvider指令设置使用哪个提供程序来验证此位置的用户。默认的file提供程序由mod_authn_file模块实现。确保服务器中存在所选的提供程序模块。

提供商请参见mod_authn_dbmmod_authn_filemod_authn_dbdmod_authn_socache

AuthDigestQop Directive

Description:确定摘要认证中使用的保护质量
Syntax:AuthDigestQop none|auth|auth-int [auth|auth-int]
Default:AuthDigestQop auth
Context:directory, .htaccess
Override:AuthConfig
Status:Extension
Module:mod_auth_digest

AuthDigestQop指令确定要使用的保护质量。 auth将仅进行身份验证(用户名/密码); auth-int是身份验证和完整性检查(还会计算和检查实体的 MD5 哈希值); none将导致模块使用旧的 RFC-2069 摘要算法(不包括完整性检查)。可以同时指定authauth-int,在这种情况下,浏览器将选择使用哪个。 none仅应在浏览器由于某种原因不喜欢它收到的挑战时使用。

Note

auth-int尚未实现。

AuthDigestShmemSize Directive

Description:为跟踪 Client 端而分配的共享内存量
Syntax:AuthDigestShmemSize size
Default:AuthDigestShmemSize 1000
Context:server config
Status:Extension
Module:mod_auth_digest

AuthDigestShmemSize指令定义了共享内存量,该共享内存量将在服务器启动时分配以跟踪 Client 端。请注意,共享内存段的设置不能小于跟踪至少一个 Client 端所需的空间。此值取决于您的系统。如果要查找确切的值,可以将AuthDigestShmemSize设置为0的值,并在尝试启动服务器后读取错误消息。

大小通常以字节为单位,但是您可以在数字后面加上KM以将您的值表示为 KBytes 或 MBytes。例如,以下指令都是等效的:

AuthDigestShmemSize 1048576
AuthDigestShmemSize 1024K
AuthDigestShmemSize 1M