配置htpasswd以使用自定义哈希算法

时间:2015-07-03 18:24:04

标签: apache authentication nginx hash .htpasswd

我有一个用户 1 的数据库,其中密码以下列方式加盐和散列:

hash = md5(md5(password) + salt)

我想为这个数据库中的任何用户创建私有目录,我想通过将.htpasswd配置为对这些目录的私有用户身份验证来实现。我已经研究了几种方法来解决这个问题,但没有一种方法支持这种特殊的哈希算法:

  • 使用htpasswd的默认单运行md5算法生成htpasswd条目,该算法在用户密码输入时生成。但是,与密码哈希存储在现有数据库中的方式相比,这会降低安全性。
  • 使用mod_auth_mysql与Apache 2 配置直接数据库访问。但是,此模块不支持自定义散列算法,而只支持单次运行salt + md5。

理想情况下,解决方案将使用现有数据库,或者至少使用现有算法,以便提供与当前存在的安全级别相同的安全级别。更改数据库的密码哈希算法不是一种选择,因为用户已经存在,我不希望每个人都重置他们的密码(尽管如此,使用较弱的算法)。

如何直接或间接在htpasswd中实现此自定义数据库身份验证?

1 - 这是一个VBulletin用户数据库。

2 - 服务器正在运行Nginx,但安装了apache2-utils进行htpasswd编辑。

1 个答案:

答案 0 :(得分:0)

正如Alexey所说,auth_request内置的预认证机制可以与没有app逻辑更改集成,基本上你创建了另一个内部后端位置,在允许请求发生之前命中。 Nginx 1.5.4+将此模块合并到主repo源中,因此不再需要额外的配置和编译步骤。