如果您使用手机实施了双因素认证,但手机丢失了,会发生什么情况?
如何恢复并使用其他程序(例如 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!)
实际上,按照上述方法操作后,我无法登录,即使通过电子邮件登录也会收到以下提示:
所选的第二步验证方法未为您的账户启用。
我让另一位管理员确认该账户未启用两步验证。
编辑:由于提出的解决方案不起作用,我将此主题重新归类为 #contribute: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。