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

Apache 2.4";。。身份验证失败..:密码不匹配“;,apache,.htaccess,authentication,.htpasswd,Apache,.htaccess,Authentication,.htpasswd,我正在Windows Server 2008 R2中运行Apache 2.4。我正在尝试对一个子目录进行密码保护,并在Apache2.0中成功地做到了这一点。升级后,我接受了Apache的建议,并尝试将身份验证配置放在httpd.config中。我允许读取密码文件,一切看起来都正常,但当我测试它时,我得到以下错误: [Mon Apr 01 19:58:36.438476 2013][auth_basic:error][pid 3984:tid 788][client xxx.yyy.254.2:

我正在Windows Server 2008 R2中运行Apache 2.4。我正在尝试对一个子目录进行密码保护,并在Apache2.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:用户主机:针对“/restricted/file.zip”的身份验证失败:密码不匹配

但是,我知道我正在发送正确的密码。我的配置见下文,任何评论都很有帮助

<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>

#AllowOverride AuthConfig
#命令允许,拒绝
#通融
AuthType Basic
AuthName受限
AuthUserFile“C:/www/mydir/passwords/pass”
需要有效用户
要求所有授权
服务器管理员admin@.com
DocumentRoot“C:/www/mydir”
服务器名“fakeurl.com”
ErrorLog“C:/www/mydir/logs/error.log”
CustomLog“C:/www/mydir/logs/accesslog/access.log”通用
服务器管理员admin@.com
DocumentRoot“C:/www/mydir”
服务器名“www.fakeurl.com”
ErrorLog“C:/www/mydir/logs/error.log”
CustomLog“C:/www/mydir/logs/accesslog/access.log”通用

您是否使用“htpasswd”创建密码

httpd-2.4.4中的htpasswd已损坏()

据我所知,该问题特定于httpd-2.4.4中的htpasswd,只有在手动输入密码时才会发生,因此您可以通过执行以下操作之一来解决该问题:

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

    • 我也遇到了同样的问题,在最后一个小时里我都快发疯了。我可以确认Steve关于在命令行中输入密码的建议是有效的——因此在我的例子中,“htpasswd-b passwordfile user password”起了作用

      是Apache上的相关错误报告。

      如果您正在使用,mod_shib和基本身份验证之间存在冲突。您可以使用以下Apache指令解决此问题:

      ShibCompatValidUser On
      

      有关详细信息,请参见

      谢谢-这让我疯狂了一个小时。在如此成熟的应用程序中,这样简单的回归是不可原谅的-(我花了很长时间才将谷歌搜索视为一个可能的问题,因为我的想法与@andylerobinson一样,“在如此成熟的应用程序中,这样简单的回归是不可原谅的。”与其重复答案,不如简单地投票或评论史蒂夫的答案。@NickM我同意,发表评论会更合适。不幸的是,我当时没有足够的信誉在StackOverflow中发表评论,我觉得最好添加对我有效的实际命令和到bug报告的链接。