電話で二段階認証を実装していて、その電話を失くしてしまった場合はどうなりますか?
代わりに別のプログラム(例:pass-otp)を復元して使用する手順は?
2 番目の因子なしではログインできないため、別のプログラムを設定するために必要なトークン(シークレット、イシュアー)を取得する方法は?
電話で二段階認証を実装していて、その電話を失くしてしまった場合はどうなりますか?
代わりに別のプログラム(例:pass-otp)を復元して使用する手順は?
2 番目の因子なしではログインできないため、別のプログラムを設定するために必要なトークン(シークレット、イシュアー)を取得する方法は?
Rails コンソールを介して 2FA を無効にする必要があります。Discourse には、現時点では SMS やメールに基づく回復メカニズムは組み込まれていません。
Discourse では、OTP デバイスを紛失した場合に備えてバックアップトークンを用意しています。
また、OTP を複数のデバイスに登録することも可能です。
FIDO2 キーも利用可能です。Discourse は複数のキーのサポートを提供しているため、安全な場所に保管するバックアップキー、メインのキー、そして Android の指紋認証や Windows の Hello デバイスなど、デバイスにバックアップされたキーを併用できます。
これらのいずれも行っていない場合は、管理者チームに連絡し、アカウントの 2 段階認証を無効にするよう依頼する必要があります。
わかりました。コンソールから 2FA を無効化する手順を教えてください。
"disable 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 を返すようになります。