1

我正在使用 Windows,现在我使用以下 .htaccess 文件进行 Http Basic 身份验证:

AuthName "Restricted Area" 
AuthType Basic
AuthUserFile D:\\some\\windows\\path/.htpasswd 
require valid-user

并遵循用户“test”的 .htpasswd 文件,密码为“test”(使用http://www.htaccesstools.com/htpasswd-generator-windows/创建):

test:$apr1$EUhLJ8Ye$LpBIbzDcBXY.80pH53oN2/

这行得通,我可以输入正确的用户名和密码并获得访问权限。

但由于我没有使用 SSL,我想使用 Digest 身份验证(以避免将纯文本密码发送到服务器)。我将线路AuthType Basic改为AuthType Digest但它不再工作 - 即使我输入正确的用户并通过我也无法获得访问权限。

可能我应该使用不同的算法在 .htpasswd 中加密/散列密码,但我找不到它......

4

1 回答 1

2

如果要使用摘要式身份验证,则必须创建新的密码文件。用于摘要身份验证的格式与用于基本身份验证的格式略有不同。通常,apache 附带了执行此操作的工具。

注意命令行程序“htpasswd.exe”和“htdigest.exe”。您需要使用第二个来生成摘要身份验证的密码文件。像这样使用它:

c:\path\to\htdigest.exe -cc:\some\windows\path.htpasswd_digest 领域用户名

第一次发出命令时只需要“-c”,如果只将新用户添加到现有文件,就像:

c:\path\to\htdigest.exe c:\some\windows\path.htpasswd_digest realm another_username

“领域”应该与您在 Apache 配置中为 AuthName 使用的值相同。

哦,显然,不要忘记在你的 apache 配置中更新 AuthUserFile ......

于 2013-03-08T18:41:10.323 回答