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_digestmod_auth_basic之类的身份验证前端,以通过在 SQL 表中查找用户来对用户进行身份验证。类似的功能由mod_authn_file提供。

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

使用mod_auth_basicmod_auth_digest时,此模块通过AuthBasicProviderAuthDigestProviderdbd值调用。

性能和缓存

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_basicmod_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_basicmod_auth_digest)。有关更多信息,请参见Password Formats