我试图在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
答案 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
方法,以匹配发送密码时浏览器应用的摘要。只有当您的数据库中的密码尚未被“消化”时,才能进行该调用。