Apache 2.4 "..身份验证失败..:密码不匹配"

12

我在Windows Server 2008 R2中运行Apache 2.4。我试图对一个子目录进行密码保护,并且在Apache 2.0中成功实现了这一点。升级后,我按照Apache的建议尝试将验证配置放在httpd.config文件中。我允许读取密码文件,一切似乎都很正常,但是当我测试时,出现以下错误:

[Mon Apr 01 19:58:36.438476 2013] [auth_basic:error] [pid 3984:tid 788] [client xxx.yyy.254.2:49253] AH01617: user master: authentication failure for "/restricted/file.zip": Password Mismatch

然而,我知道我发送了正确的密码。请参见下面的配置,任何评论都有帮助。

<Directory "C:/www/mydir/restricted">
    #AllowOverride AuthConfig
    #Order allow,deny
    #Allow from all
    AuthType Basic
    AuthName Restricted
    AuthUserFile "C:/www/mydir/passwords/pass"
    Require valid-user
</Directory>  
<Directory "C:/www/mydir">
    Require all granted
</Directory>  
<VirtualHost *:80>
    ServerAdmin admin@.com
    DocumentRoot "C:/www/mydir"
    ServerName "fakeurl.com"
    ErrorLog "C:/www/mydir/logs/error.log"
    CustomLog "C:/www/mydir/logs/accesslog/access.log" common
</VirtualHost>  
<VirtualHost *:80>
    ServerAdmin admin@.com
    DocumentRoot "C:/www/mydir"
    ServerName "www.fakeurl.com"
    ErrorLog "C:/www/mydir/logs/error.log"
    CustomLog "C:/www/mydir/logs/accesslog/access.log" common
</VirtualHost>
4个回答

26

我刚遇到了同样的问题,已经让我烦恼了一个小时。我可以确认,Steve的建议在命令行中输入密码是可行的-所以在我的情况下,“htpasswd -b passwordfile user password”起了作用。

这里是Apache相关的错误报告。


3
不要重复答案,直接投票或评论Steve的答案会更好。 - Nick M
6
@NickM 我同意,留下评论更合适。不幸的是,当时我没有足够的积分在StackOverflow上评论,所以觉得把对我有效的实际命令和一个指向错误报告的链接加入进来会很有帮助。请您谅解。 - Eddy

22

您是用 'htpasswd' 创建密码的吗?

httpd-2.4.4 中的 htpasswd 有问题 (https://issues.apache.org/bugzilla/show_bug.cgi?id=54735)。

据我所知,这个问题只出现在 httpd-2.4.4 中的 htpasswd 上,并且仅在手动输入密码时才会出现,因此可以通过以下方式解决:

  • 在命令行上提供密码(例如 "htpasswd -b .htpasswd user password");
  • 使用 httpd-2.4.3 版本中的 htpasswd;
  • 改用摘要身份验证而不是基本身份验证(htdigest 不受影响);
  • 等待 httpd-2.4.5 发布;
  • 应用 bug 报告中的补丁(似乎有效),并从源代码重新构建 htpasswd。

3
谢谢 - 这让我烦了一个小时。在这样成熟的应用程序中出现这种简单的回归是不可原谅的。 :-( - Andy Lee Robinson
我花了很长时间才想到用谷歌搜索这个可能的问题,因为我的想法和@AndyLeeRobinson一样,认为“在这样一个成熟的应用程序中出现这样简单的回归是不可原谅的”。 - Nick M

0

我在 Apache/2.4.6 (CentOS) 上遇到了同样的情况。

以上方法都没有解决问题,从 $_SERVER['DOCUMENT_ROOT']; 确认 htpasswd 的路径是正确的。

好吧,也许有人会发现这个有用,我通过以下方式解决了问题:htpasswd -nb username newpassw > <path-to>/htpasswd

顺便说一句,在 CentOS 7 上的 Apache 2.4.6 中仍然存在这个问题。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接