如果您使用手机实施了双因素认证,但手机丢失了,会发生什么情况?
如何恢复并使用其他程序(例如 pass-otp)?
由于没有第二个因素就无法登录,如何获取用于设置其他程序的令牌(密钥、发行者)?
您必须通过 Rails 控制台禁用双因素认证(2FA)。Discourse 目前尚未内置基于短信或电子邮件的恢复机制。
Discourse 提供备用令牌,在您丢失 OTP 设备时使用。
您还可以在多个设备上注册 OTP。
FIDO2 密钥也可使用,Discourse 支持使用多个密钥,因此您可以将备用密钥存放在安全的地方,保留主密钥,并将备份密钥集成到设备中,例如 Android 指纹和 Windows 笔记本的 Hello 设备。
如果您未采取上述任一措施,则必须联系管理员团队,请求其禁用您账户的双因素认证(2FA)。
好的,能否请您指出从控制台禁用双重身份验证(2FA)的操作流程?
首先搜索“禁用双因素认证”,第一条结果显示:
因此:
./launcher enter app
rails c
id = User.find_by(username: "YOURUSERNAME").id
UserSecondFactor.totps.where(user_id: id).each(&:destroy!)
好吧,实际上,在按照上述方法操作后,我无法再登录,即使通过电子邮件登录也会出现以下消息:
所选的第二因素验证方法未为您的账户启用。
我让另一位管理员确认该账户并未启用双重验证(2FA)。
编辑 我将主题重新归类为 bug,因为建议的解决方案无效。
今天我再次查看,发现:
[25] pry(main)> how.totp_enabled?
=> false
[26] pry(main)> how.backup_codes_enabled?
=> true
[27] pry(main)> how.totp_or_backup_codes_enabled?
=> true
因此,我尝试按照上面 @falco 的回复,一并移除备份代码:
UserSecondFactor.backup_codes.where(user_id: id).each(&:destroy!)
现在,这是禁用 OTP 的完整解决方案(适用于用户丢失所有恢复途径的情况):您必须同时删除 totps 条目和 backup_codes,这样调用 #totp_or_backup_codes_enabled? 才会返回 false。