验证成功 无需线路可用

验证成功 无需线路可用

升级到 Ubuntu 14.04(和 Apache2 2.4)服务器我无法将 MySQL 用作 htaccess;

升级之前,我在虚拟主机中使用 MySQL 作为 htaccess - 运行良好:

<Directory /var/www/html/tilmelding/login>
           AuthBasicAuthoritative Off
            AuthUserFile /dev/null

            # begin auth_mysql configuration
            AuthMySQL On
            AuthMySQL_Host localhost
            AuthMySQL_User **********
            AuthMySQL_Password *********
            AuthMySQL_DB **********
            AuthMySQL_Password_Table user_info
            AuthMySQL_Username_Field user_name
            AuthMySQL_Password_Field user_passwd
            AuthMySQL_Empty_Passwords Off
            AuthMySQL_Encryption_Types PHP_MD5
            AuthMySQL_Authoritative 
            AuthType Basic
            AuthName "auth_mysql test"
            Require valid-user

升级后它不起作用。

在日志文件中我得到:


[:debug] [pid 31333] mod_auth_mysql.c(1578): Constructing password collection query with passfield=[user_passwd], table=[user_info], userfield=[helgoland], where_clause=[]
[:debug] [pid 31333] mod_auth_mysql.c(1410): sec->dbh in /var/www/html/tilmelding/login/ is 
[:debug] [pid 31333] mod_auth_mysql.c(1417): Ordinary query
[:debug] [pid 31333] mod_auth_mysql.c(1434): Running query: [SELECT user_passwd FROM user_info WHERE user_name='helgoland']
[:debug] [pid 31333] mod_auth_mysql.c(1522): Checking with PHP_MD5
[:debug] [pid 31333] mod_auth_mysql.c(1524): Auth succeeded
[:error] [pid 31333] No requires line available

我能够从 CLI 执行查询并获取 MD5。

我错过了什么?

答案1

只需添加AuthMySQL_Authoritative Off到 .htaccess

答案2

我偶然发现了完全相同的问题,所以我看到了这篇文章。

对于任何到达这里的人来说,这是我的结论。

经过进一步搜索网络后,大多数人似乎得出结论,lib-apache2-mod-auth-mysql 与 Apache 2.4(Ubuntu 14.04 中的标准)不兼容,而且对该模块的支持已经停止。

有人建议重新编译(版本 3.0.0)并打上一些补丁即可修复该问题。但这似乎有点“黑客”的意味。

使用 MySQL 进行基本身份验证/授权的官方“Apache”方法是使用 dbd 模块 (mod_authn_dbd)。如何做到这一点在官方 Apache 文档中有非常清晰的解释。http://httpd.apache.org/docs/current/mod/mod_authn_dbd.html.
本文档根据 Apache 许可证授权。 http://www.apache.org/licenses/LICENSE-2.0

因此请注意,虽然您可以在 Ubuntu 14.04 LTS 中使用 apt-get 安装 lib-apache2-mod-auth-mysql,但最好避免这样做,因为它对于此版本而言本质上是有缺陷的。

答案3

AuthMySQL_Authoritative 关闭对我来说也有效(作为 Virtualhost 配置中的一行)。我相信它允许 mod_auth_mysql 将凭据传递给 mod_auth 进行身份验证。

相关内容