apache模块 mod_authn_dbd
| 说明 | 使用SQL数据库为认证提供支持 |
|---|---|
| 状态 | 扩展(E) |
| 模块名 | authn_dbd_module |
| 源文件 | mod_authn_dbd.c |
| 兼容性 | 仅在 Apache 2.1 及以后的版本中可用 |
概述
该模块为认证前端(mod_auth_digest和mod_auth_basic)使用SQL数据库进行用户认证提供支持。mod_authn_file模块也提供类似的功能。
本模块依赖于mod_dbd指定的后端数据库驱动程序和连接参数以及管理数据库连接。
使用mod_auth_basic或mod_auth_digest的时候,可以通过在AuthBasicProvider或AuthDigestProvider指令中使用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"