mod_authn_dbd
描述: | 使用 SQL 数据库的用户身份验证 |
状态: | 延期 |
模块标识符: | authn_dbd_module |
源文件: | mod_authn_dbd.c |
兼容性: | 可在 Apache 2.1 及更高版本中使用 |
摘要
此模块提供身份验证 front-ends,例如mod_auth_digest和mod_auth_basic,以通过在 SQL 表中查找用户来对用户进行身份验证。例如,mod_authn_file提供了类似的功能。
此模块依赖mod_dbd指定后端数据库驱动程序和连接参数,并管理数据库连接。
使用mod_auth_basic或mod_auth_digest时,通过带dbd
value 的AuthBasicProvider或AuthDigestProvider 指令调用此模块。
性能和缓存
HTTPD 2.2/2.4 中的一些 DBD 身份验证用户报告说它在数据库上施加了有问题的负载。这很可能是 HTML 页面包含数百个 objects(e.g.图像,脚本等),每个都需要身份验证。受此类问题影响(或担心)的用户应使用mod_authn_socache来缓存凭据并从数据库中获取大部分负载。
Configuration Example
这个简单的 example 显示了在 Authentication 和 DBD 框架的 context 中使用这个模块。
# mod_dbd configuration # UPDATED to include authentication cacheing 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 version 1.3.0 或更高版本构建的,那么每当对数据库服务器进行查询时,查询返回的第一行中的所有列值都将使用前缀为“AUTHENTICATE_”的环境变量放置在环境中。
如果 example 的数据库查询返回用户的用户名,完整 name 和电话号码,则 CGI 程序将可以访问此信息,而无需进行第二次独立数据库查询来收集此附加信息。
这有可能大大简化某些 web applications 所需的编码和配置。
AuthDBDUserPWQuery 指令
描述: | 用于查找用户密码的 SQL 查询 |
句法: | AuthDBDUserPWQuery query |
Context: | 目录 |
状态: | 延期 |
模块: | mod_authn_dbd |
AuthDBDUserPWQuery
指定用于查找指定用户的密码的 SQL 查询。执行 SQL 查询时,用户的 ID 将作为单个 string 参数传递。它可以使用%s
格式说明符在查询语句中引用。
AuthDBDUserPWQuery "SELECT password FROM authn WHERE user = %s"
查询语句返回的第一行的第一列 value 应该是包含加密密码的 string。后续行将被忽略。如果未返回任何行,则不会通过mod_authn_dbd对用户进行身份验证。
如果 httpd 是针对APR version 1.3.0 或更高版本构建的,则查询语句返回的第一行中的任何其他列值将存储为名称格式为AUTHENTICATE_COLUMN
的环境变量。
加密的密码格式取决于正在使用的身份验证前端(e.g.mod_auth_basic或mod_auth_digest)。有关更多信息,请参见密码格式。
AuthDBDUserRealmQuery 指令
描述: | 用于查找用户和领域的密码哈希的 SQL 查询。 |
句法: | AuthDBDUserRealmQuery query |
Context: | 目录 |
状态: | 延期 |
模块: | mod_authn_dbd |
AuthDBDUserRealmQuery
指定 SQL 查询以在摘要认证 process 中查找指定用户和领域的密码。在执行 SQL 查询时,该 order 中的用户 ID 和领域将作为 string 参数传递。可以使用%s
格式说明符在查询语句中引用它们。
AuthDBDUserRealmQuery "SELECT password FROM authn WHERE user = %s AND realm = %s"
查询语句返回的第一行的第一列 value 应该是包含加密密码的 string。后续行将被忽略。如果未返回任何行,则不会通过mod_authn_dbd对用户进行身份验证。
如果 httpd 是针对APR version 1.3.0 或更高版本构建的,则查询语句返回的第一行中的任何其他列值将存储为名称格式为AUTHENTICATE_COLUMN
的环境变量。
加密的密码格式取决于正在使用的身份验证前端(e.g.mod_auth_basic或mod_auth_digest)。有关更多信息,请参见密码格式。