'没有指定AuthDBDUserPWQuery'在Apache 2.4中设置AuthDBDUserRealmQuery时的错误日志

时间:2016-08-16 17:27:48

标签: apache2 basic-authentication apache2.4

我试图在Apache 2.4中使用mod_authn_dbd进行身份验证。我根据文档设置了所有内容,并且我使用指令AuthDBDUserPWQuery对其进行了测试,并且它运行良好。现在,如果我尝试使用指令AuthDBDUserRealmQuery,并尝试访问服务器,则error.log显示

[authn_dbd:error] [pid 24419:tid 140371559429888] [client some_ip:some_port] AH01654: No AuthDBDUserPWQuery has been specified

在下面我报告了我的000-default.conf文件(我将我的东西放在那里,因为我需要反向代理)。

<VirtualHost *:80>

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    DBDriver mysql
    DBDParams "host=localhost port=3306 user=my_user pass=my_pass dbname=the_db"
    DBDMin  2
    DBDKeep 4
    DBDMax  10
    DBDExptime 300

    <Location />
      AuthName "You Must Login"
      AuthType Basic
      AuthBasicProvider dbd
      AuthDBDUserRealmQuery "SELECT ENCRYPT(password) FROM password WHERE username = %s AND realm = %s"
      Require valid-user
    <Location/>

</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

1 个答案:

答案 0 :(得分:0)

经过一番挣扎,我找到了答案。根据{{​​3}},AuthDBDUserRealmQuery仅适用于mod_auth_digest。它写在描述中,虽然略有隐藏和误导。最终的配置文件应该类似于

    <Directory />
      AuthName "Your realm"
      AuthType Digest
      AuthDigestDomain /
      AuthDigestProvider dbd
      AuthDBDUserRealmQuery "SELECT MD5(password) FROM password WHERE username = %s AND realm = %s"
      Require valid-user
    </Directory>

请注意查询中调用的MD5方法,以匹配发送密码时浏览器应用的摘要。只有当您的数据库中的密码尚未被“消化”时,才能进行该调用。