Migrated password hashes support

感谢 @pfaffman

我进行了一些测试,可以确认它在 Drupal 7 上无法工作,根据 Drupal 7: Secure password storage by default at last | Jon Cave 的信息,Drupal 7 似乎使用的是 SHA-512。

如果我能添加一个兼容的版本,我会创建一个 PR。

Rich

3 个赞

你好 :waving_hand:

我从 bbPress 迁移了大量内容到我的 Discourse 安装中。我可以看到所有的帖子、用户等信息。但是,我的用户无法使用来自我 WordPress 站点的“旧”密码数据登录。我安装了该插件,它已列在我的管理区域的插件部分。我勾选了所有可用的复选框。

尽管如此:仍然没有人能够登录!
另外,我也不知道该如何应用插件 readme 中提供的代码:

user = User.find_by(username: 'user')
user.custom_fields['import_pass'] = '5f4dcc3b5aa765d61d8327deb882cf99'
user.save

此外,我也不清楚 readme 中提到的“替代密码哈希”具体是什么意思。

@michaeld,你能提供更多关于如何使用该插件的指导吗?

据我所知,bbPress 导入器支持该插件,因此您已经完成了所有必要的步骤,无需再做其他操作。

1 个赞

天哪,经过更多测试后,发现它其实已经能正常工作了。问题出在我测试时密码被修改了 :man_facepalming: 抱歉!感谢这个超棒的插件!它让我的生活轻松多了!

2 个赞

你好,我在尝试实现这个功能时遇到了问题。我创建了一个自定义字段 import_pass 并安装了插件。再次在我的 SMF 数据库上运行导入脚本,但毫无成效,之后所有人都无法登录。在自定义字段中,我只能看到一个“-”,而不是某个哈希值。

正如其他用户之前指出的那样,我不确定该如何处理这段代码:

user = User.find_by(username: 'user')
user.custom_fields['import_pass'] = '5f4dcc3b5aa765d61d8327deb882cf99'
user.save

非常感谢您的指导。这段代码是应该放入 smf2.rb 导入脚本文件中,还是另有安排?

这样行不通。不过,在导入过程中无需安装插件,也无需手动创建自定义字段。SMF2 脚本应该已经处理好了。所以问题出在其他地方。

这段代码是作为脚本作者的示例存在的。它已经在 SMF2 脚本中了。

3 个赞

谢谢,太好了。您的意思是,如果我删除手动创建的自定义字段,仅保持插件处于激活状态,那么它应该能自动运行,并在需要时获取密码哈希值。

是否有日志可供我们查看,以了解插件为何未按预期工作?

该插件负责解释和使用导入器设置的自定义字段。如果自定义字段为空或不存在,那么问题不在于插件,而在于导入器。

2 个赞

插件应该在迁移之前还是之后安装?还是说这没有任何影响?

TL;DR:之后。

您应该在实际运行已迁移论坛的实例上安装该插件。

我们曾发现,如果将插件安装在实际运行迁移脚本的实例上,会导致问题,因此我们不建议在此处安装。

4 个赞

你好,

有人测试过 Auth0 的密码哈希吗?

我无法直接进行测试,因为他们的密码哈希导出功能是一项付费客户服务。我只是想确认一下,在我自己尝试之前,是否有人已经尝试过这种方式。

看起来他们的密码是使用 bcrypt 进行哈希处理的,盐轮数为 10。

谢谢。

2 个赞

你好,关于 Drupal 7 的支持,有没有什么变化?

糟糕,这是一个我错过的两年前的问题!

bcrypt 应该支持任意轮数,只要轮数以通常方式编码($2a$10$...

没有,这段代码三年多没有动过了。

1 个赞

我们几年前使用 migratepassword 插件将论坛迁移到了 Discourse。有没有办法检查有多少用户仍在使用旧论坛遗留的密码哈希?

从技术上讲,用户并没有“使用”遗留密码哈希。

当用户在迁移后首次登录,且输入的密码与 Discourse 密码(初始时为随机字符串)不匹配时,插件便会开始工作。

  • 它会检查输入的密码是否匹配 import_pass 自定义字段,使用其已知的所有哈希方法。
  • 如果找到匹配项,它会将密码保存到用户账户,然后移除 import_pass 自定义字段。

因此,几年之后,只有那些从未使用迁移后的密码登录的用户,其账户中仍会保留 import_pass 自定义字段。

a) 他们从未登录过(你可以通过最后访问时间查看)
b) 他们未使用迁移后的密码,而是通过邮箱、其他认证方式登录,或者他们已重置了密码

:warning: 我刚刚意识到情况 b 可能会引入安全隐患。如果用户不记得密码并进行了修改,或者使用了其他认证方式,迁移后的密码哈希仍会保留,并且可以与新密码同时使用。我刚刚已推送了插件更新,确保在每次成功登录时清除 import_pass 自定义字段。

因此,今后 import_pass 自定义字段将仅存在于从未登录过的用户账户中。

2 个赞