On this page
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_dbm,mod_authn_file,mod_authn_dbd和mod_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 摘要算法(不包括完整性检查)。可以同时指定auth
和auth-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
的值,并在尝试启动服务器后读取错误消息。
大小通常以字节为单位,但是您可以在数字后面加上K
或M
以将您的值表示为 KBytes 或 MBytes。例如,以下指令都是等效的:
AuthDigestShmemSize 1048576
AuthDigestShmemSize 1024K
AuthDigestShmemSize 1M