0

使用 Apache mod_auth_basicmod_authn_dbd,您可以通过在数据库中查找该用户的密码来验证该用户。如果密码保持清晰,我看到它可以工作,但是如果我们使用随机字符串作为盐(也存储在数据库中)然后存储连接的散列怎么办?

mod_authn_dbd 要求您指定一个查询以选择该密码,而不是决定用户是否经过身份验证。因此,您不能使用该查询将用户提供的密码与盐连接,然后与存储的哈希进行比较。

AuthDBDUserRealmQuery "SELECT password FROM authn WHERE user = %s AND realm = %s"

有没有办法使这项工作?

4

1 回答 1

0

查看基本身份验证的密码格式,如果使用apr_md5_encode函数完成哈希,我似乎可以完成这项工作。

发现另一个与此相关的问题并链接到Java 实现。我使用该实现稍作改动来计算我的网站正常用户创建流程中的数据库哈希。在此之后我可以使用 mod_authn_dbd 这个查询:

AuthDBDUserRealmQuery "SELECT CONCAT('$apr1$',password_salt,'$',password_hash) FROM users WHERE user = %s AND realm = %s"
于 2012-06-06T14:20:00.403 回答