On this page
Apache 模块 mod_authn_dbd
Description: | 使用 SQL 数据库的用户身份验证 |
---|---|
Status: | Extension |
Module Identifier: | authn_dbd_module |
Source File: | mod_authn_dbd.c |
Compatibility: | 在 Apache 2.1 及更高版本中可用 |
Summary
该模块提供了诸如mod_auth_digest和mod_auth_basic之类的身份验证前端,以通过在 SQL 表中查找用户来对用户进行身份验证。类似的功能由mod_authn_file提供。
此模块依靠mod_dbd来指定后端数据库驱动程序和连接参数,并 Management 数据库连接。
使用mod_auth_basic或mod_auth_digest时,此模块通过AuthBasicProvider或AuthDigestProvider与dbd
值调用。
性能和缓存
HTTPD 2.2/2.4 中的某些 DBD 身份验证用户报告说,它对数据库造成了问题。 HTML 页面包含数百个对象(例如图像,脚本等)的每个对象都需要身份验证时,这种情况最有可能发生。受此类问题影响(或担心)的用户应使用mod_authn_socache来缓存凭据,并减轻数据库的大部分负担。
Configuration Example
这个简单的示例说明了如何在 Authentication 和 DBD 框架的上下文中使用此模块。
# mod_dbd configuration
# UPDATED to include authentication caching
DBDriver pgsql
DBDParams "dbname=apacheauth user=apache password=xxxxxx"
DBDMin 4
DBDKeep 8
DBDMax 20
DBDExptime 300
<Directory "/usr/www/myhost/private">
# mod_authn_core and mod_auth_basic configuration
# for mod_authn_dbd
AuthType Basic
AuthName "My Server"
# To cache credentials, put socache ahead of dbd here
AuthBasicProvider socache dbd
# Also required for caching: tell the cache to cache dbd lookups!
AuthnCacheProvideFor dbd
AuthnCacheContext my-server
# mod_authz_core configuration
Require valid-user
# mod_authn_dbd SQL query to authenticate a user
AuthDBDUserPWQuery "SELECT password FROM authn WHERE user = %s"
</Directory>
公开登录信息
如果 httpd 是针对APR版本 1.3.0 或更高版本构建的,则每当对数据库服务器进行查询时,使用带有前缀“ AUTHENTICATE_”的环境变量,将查询返回的第一行中的所有列值都放在环境中。 。
例如,如果数据库查询返回了用户名,用户的全名和电话 Numbers,则 CGI 程序将有权访问此信息,而无需进行第二次独立的数据库查询来收集此附加信息。
这有可能极大简化某些 Web 应用程序中所需的编码和配置。
AuthDBDUserPWQuery Directive
Description: | SQL 查询以查找用户密码 |
---|---|
Syntax: | AuthDBDUserPWQuery query |
Context: | directory |
Status: | Extension |
Module: | mod_authn_dbd |
AuthDBDUserPWQuery
指定一个 SQL 查询以查找指定用户的密码。执行 SQL 查询时,用户 ID 将作为单个字符串参数传递。它可以使用%s
格式说明符在查询语句中引用。
AuthDBDUserPWQuery "SELECT password FROM authn WHERE user = %s"
查询语句返回的第一行的第一列值应该是包含加密密码的字符串。随后的行将被忽略。如果未返回任何行,则不会通过mod_authn_dbd对用户进行身份验证。
如果 httpd 是针对APR版本 1.3.0 或更高版本构建的,则查询语句返回的第一行中的所有其他列值都将以名称为AUTHENTICATE_COLUMN
的形式存储为环境变量。
加密的密码格式取决于所使用的身份验证前端(例如mod_auth_basic或mod_auth_digest)。有关更多信息,请参见Password Formats。
AuthDBDUserRealmQuery Directive
Description: | SQL 查询以查找用户和领域的密码哈希。 |
---|---|
Syntax: | AuthDBDUserRealmQuery query |
Context: | directory |
Status: | Extension |
Module: | mod_authn_dbd |
AuthDBDUserRealmQuery
指定一个 SQL 查询,以在摘要身份验证过程中查找指定用户和领域的密码。执行 SQL 查询时,将按此 Sequences 将用户 ID 和领域作为字符串参数传递。可以使用%s
格式说明符在查询语句中引用它们。
AuthDBDUserRealmQuery "SELECT password FROM authn WHERE user = %s AND realm = %s"
查询语句返回的第一行的第一列值应该是包含加密密码的字符串。随后的行将被忽略。如果未返回任何行,则不会通过mod_authn_dbd对用户进行身份验证。
如果 httpd 是针对APR版本 1.3.0 或更高版本构建的,则查询语句返回的第一行中的所有其他列值都将以名称为AUTHENTICATE_COLUMN
的形式存储为环境变量。
加密的密码格式取决于所使用的身份验证前端(例如mod_auth_basic或mod_auth_digest)。有关更多信息,请参见Password Formats。