11

我在 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:用户主:“/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>
4

3 回答 3

25

我只是遇到了同样的问题,在过去的一个小时里让我发疯。我可以确认史蒂夫关于在命令行中输入密码的建议有效 - 所以在我的情况下,“htpasswd -b passwordfile 用户密码”起到了作用。

是 Apache 的相关错误报告。

于 2013-04-04T01:04:49.553 回答
20

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

httpd-2.4.4 中的 htpasswd 已损坏 ( https://issues.apache.org/bugzilla/show_bug.cgi?id=54735 )。

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

  • 在命令行上提供密码(例如“htpasswd -b .htpasswd 用户密码”);
  • 使用httpd-2.4.3以外的htpasswd版本;
  • 使用 Digest Authentication 而不是 Basic Authentication(htdigest 不受影响);
  • 等到 httpd-2.4.5 发布;
  • 在错误报告中应用补丁(这似乎有效)并从源代码重建 htpasswd。
于 2013-04-03T20:45:34.953 回答
0

如果您使用的是Shibboleth,则 mod_shib 和基本身份验证之间存在冲突。您可以使用以下 Apache 指令来解决它:

ShibCompatValidUser On

有关详细信息,请参阅使用混合身份验证方法的 Apache 2.4 上的 Shibboleth

于 2020-01-13T16:23:36.713 回答