Apache > HTTP Server > 文档 > 版本2.2 > 模块
   致谢 | 本篇译者:金步国(其他作品) | 本页最后更新:2006年10月20日[查看最新版本]

Apache模块 mod_authn_dbd

说明使用SQL数据库为认证提供支持
状态扩展(E)
模块名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值调用该模块。

配置示例

下面这个简单的示例展示了如何在基于DBD框架的认证环境中使用该模块。

#数据库管理

#使用PostgreSQL驱动程序
DBDriver pgsql

#连接字符串:数据库名 用户名 密码
DBDParams "dbname=htpasswd user=apache password=xxxxxx"

#管理连接池的参数
DBDMin  1
DBDKeep 2
DBDMax  10
DBDExptime 60

#认证部分
<Directory /usr/www/myhost/private>

    #基于authn_dbd的认证配置
    AuthType Basic
    AuthName "My Server"
    AuthBasicProvider dbd

    #授权配置
    Require valid-user

    #验证用户的SQL查询语句
    #(注意:DBD驱动程序同时允许stdio风格的 %s 和特定于数据库的语法)
    AuthDBDUserPWQuery "select password from authn where username = %s"
</Directory>

AuthDBDUserPWQuery 指令

说明检索用户密码的SQL查询语句
语法AuthDBDUserPWQuery query
作用域directory
覆盖项AuthConfig
状态扩展(E)
模块mod_authn_dbd

AuthDBDUserPWQuery指定了从数据库中检索用户密码的SQL查询语句。该查询语句必须接受一个单独的字符串(通常是SQL里的varchar类型)参数(username),同时返回一个单独的字符串值(hash过的密码)。

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

AuthDBDUserRealmQuery 指令

说明为用户名与认证区域的组合检索密码的SQL查询语句
语法AuthDBDUserRealmQuery query
作用域directory
覆盖项AuthConfig
状态扩展(E)
模块mod_authn_dbd

AuthDBDUserRealmPWQuery指定了从数据库中检索一个用户名与认证区域的组合的密码的SQL查询语句。该查询语句必须接受两个单独的字符串(通常是SQL里的varchar类型)参数(username, realm),同时返回一个单独的字符串值(hash过的密码)。

AuthDBDUserRealmPWQuery "SELECT password FROM authn WHERE username = %s AND realm = %s"