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

Apache 模块 mod_authn_dbd

可用语言:  en  |  fr 

描述使用 SQL 数据库进行用户身份验证
状态扩展
模块标识符authn_dbd_module
源文件mod_authn_dbd.c
兼容性在 Apache 2.1 及更高版本中可用

摘要

此模块为身份验证前端(如 mod_auth_digestmod_auth_basic)提供支持,通过在 SQL 表中查找用户来进行身份验证。类似的功能由例如 mod_authn_file 提供。

此模块依赖于 mod_dbd 来指定后端数据库驱动程序和连接参数,并管理数据库连接。

在使用 mod_auth_basicmod_auth_digest 时,此模块通过 AuthBasicProviderAuthDigestProvider 使用 dbd 值调用。

Support Apache!

主题

指令

错误修复清单

另请参阅

top

性能和缓存

一些 HTTPD 2.2/2.4 中使用 DBD 身份验证的用户报告说,它对数据库造成了严重的负载。这很可能是因为 HTML 页面包含数百个对象(例如图像、脚本等),每个对象都需要身份验证。受此类问题影响(或担心)的用户应使用 mod_authn_socache 来缓存凭据,并减轻数据库的大部分负载。

top

配置示例

此简单示例展示了在身份验证和 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>
top

公开登录信息

每当向数据库服务器发出查询时,查询返回的第一行中的所有列值都会被放置在环境中,使用以“AUTHENTICATE_”为前缀的环境变量。

例如,如果数据库查询返回了用户的用户名、全名和电话号码,那么 CGI 程序就可以访问这些信息,而无需进行第二次独立的数据库查询来收集这些额外信息。

这有可能极大地简化某些 Web 应用程序所需的编码和配置。

top

AuthDBDUserPWQuery 指令

描述查找用户密码的 SQL 查询
语法AuthDBDUserPWQuery query
上下文目录
状态扩展
模块mod_authn_dbd

AuthDBDUserPWQuery 指定一个 SQL 查询,用于查找指定用户的密码。当执行 SQL 查询时,用户的 ID 将作为单个字符串参数传递。它可以在查询语句中使用 %s 格式说明符进行引用。

AuthDBDUserPWQuery "SELECT password FROM authn WHERE user = %s"

查询语句返回的第一行的第一列值应是一个包含加密密码的字符串。后续行将被忽略。如果未返回任何行,则用户将不会通过 mod_authn_dbd 进行身份验证。

查询语句返回的第一行中的任何其他列值都将存储为环境变量,其名称格式为 AUTHENTICATE_COLUMN

加密密码格式取决于正在使用的身份验证前端(例如 mod_auth_basicmod_auth_digest)。有关更多信息,请参阅 密码格式

top

AuthDBDUserRealmQuery 指令

描述查找用户和领域密码散列的 SQL 查询。
语法AuthDBDUserRealmQuery query
上下文目录
状态扩展
模块mod_authn_dbd

AuthDBDUserRealmQuery 指定一个 SQL 查询,用于在摘要身份验证过程中查找指定用户和领域的密码。用户的 ID 和领域(按此顺序)将作为字符串参数传递,当执行 SQL 查询时。它们可以在查询语句中使用 %s 格式说明符进行引用。

AuthDBDUserRealmQuery "SELECT password FROM authn WHERE user = %s AND realm = %s"

查询语句返回的第一行的第一列值应是一个包含加密密码的字符串。后续行将被忽略。如果未返回任何行,则用户将不会通过 mod_authn_dbd 进行身份验证。

查询语句返回的第一行中的任何其他列值都将存储为环境变量,其名称格式为 AUTHENTICATE_COLUMN

加密密码格式取决于正在使用的身份验证前端(例如 mod_auth_basicmod_auth_digest)。有关更多信息,请参阅 密码格式

可用语言:  en  |  fr 

top

评论

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