Apache 配置htpasswd以使用自定义哈希算法根据现有数据库验证用户

Apache 配置htpasswd以使用自定义哈希算法根据现有数据库验证用户,apache,authentication,nginx,hash,.htpasswd,Apache,Authentication,Nginx,Hash,.htpasswd,我有一个users1数据库,其中密码按以下方式进行加密和散列: hash = md5(md5(password) + salt) 我想为这个数据库中的任何用户创建私有目录,我设想通过配置.htpasswd到私有用户对这些目录的身份验证来实现这一点。我已经研究了几种方法,但没有一种方法支持这种特定的哈希算法: 使用用户密码输入时生成的htpasswd默认单次运行md5算法生成htpasswd条目。但是,与现有数据库中存储密码哈希的方式相比,这降低了安全性 与Apache2一起使用可配置直接数据

我有一个users1数据库,其中密码按以下方式进行加密和散列:

hash = md5(md5(password) + salt)
我想为这个数据库中的任何用户创建私有目录,我设想通过配置.htpasswd到私有用户对这些目录的身份验证来实现这一点。我已经研究了几种方法,但没有一种方法支持这种特定的哈希算法:

  • 使用用户密码输入时生成的htpasswd默认单次运行md5算法生成htpasswd条目。但是,与现有数据库中存储密码哈希的方式相比,这降低了安全性
  • 与Apache2一起使用可配置直接数据库访问。但是,此模块不支持自定义哈希算法,而只支持单次运行salt+md5
理想情况下,解决方案将使用现有数据库,或者至少使用现有算法,以实现与当前存在的相同级别的安全性。更改数据库的密码散列算法不是一个选项,因为用户已经存在,我不希望要求他们每个人都重置密码(尽管使用较弱的算法)

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

1-这是一个用户数据库


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

正如Alexey所说,内置的预认证机制可以集成,无需更改应用程序逻辑,基本上您可以创建另一个内部后端位置,以便在允许请求发生之前命中。Nginx 1.5.4+将此模块整合到主回购源代码中,因此不再需要额外的配置和编译步骤。

我无法决定是否将此发布到StackOverflow、ServerFault或Security.SE上,但决定这样做是因为我有声誉,可以在必要时发布赏金。如果这些其他网站中有一个是解决这个问题的最佳选择,请告诉我,以便我可以在必要时请求I迁移。恩,nginx中有auth_请求,可用于以任何方式实现身份验证,如使用php或something@AlexeyTen谢谢我很惊讶,当我花了几个小时研究这件事时,竟然找不到类似的东西