Craft CMS の二要素認証用デバイスが使えなくなった場合の対処法について

Craft CMS で二要素認証を導入する場合、3rd Party の Two-Factor Authentication プラグインを利用します。

Craft 3 / Craft 4 に対応しているフリーのプラグインで、管理者はインストール後に適用したいユーザーグループへプラグインのアクセス権限をセットするだけで済みます。一方、二要素認証を利用したいユーザーは、管理画面のプラグイン設定画面にある QR コードを認証アプリで読み込み、コード認証を行えばアカウントが保護されます。

このように導入と利用自体は簡単にできるものの、万一デバイスが使えなくなった場合、どうすればいいのでしょうか?

今回は、二要素認証用デバイスが使えなくなった場合の対処法について考えてみます。
これは Craft CMS Advent Calendar 2023 21日目の記事です。

ログインセッションが有効な場合

PC ブラウザなどでログイン中の場合、管理画面で二要素認証を解除できます。

一般ユーザーのプラグイン設定画面サンプル

プラグインの設定画面に移動し、I don't want two-factor authentication ボタンをクリックします。

なお、実際の制作時には訳文データが適用されていると思いますので、そちらに従ってください。

ログインセッションが切れてしまった場合

管理者に二要素認証を解除したい ユーザ名 を伝えましょう。

ユーザー編集画面サンプル

管理者は、ユーザー編集画面の右カラムの 2-Factor Auth 枠にある Disable ボタンで二要素認証を解除できます。

その後、改めてログインすれば、新しいデバイスで再設定できます。

管理者がログインできなくなった場合

管理者のログインセッションが切れてしまった場合、ブラウザから解除することができません。
その場合は、データベースを直接操作する必要があります。

データベースのレコードサンプル

まず、twofactorauthentication_user テーブルの userId カラムの値が、管理者ユーザーの id であるレコードを探します。

次に、該当レコード自体を削除するか、dateVerified カラムの値を NULL にします。

これで、管理者が二要素認証用のデバイスを失くしてしまった場合でも、ログインできるようになります。

まとめ

今回は、Two-Factor Authentication プラグイン導入時に、二要素認証用のデバイスが使えなくなってしまった場合の対処法について考えてみました。

管理者がログインできなくなった場合でも対処法があることを知っておけば、安心ですね。

なお、Craft 5 からは二要素認証が標準機能となります。

Craft 5 alpha : Two-Step Verification を試してみる | mersy note
https://note.mersy418.com/article/craft5-two-step-verification

この場合も、authenticator テーブルの userId カラムの値でユーザーを特定し、該当レコードを削除すれば二要素認証を解除できることを Craft 5.0.0-alpha.2 で確認しましたので、頭の片隅に入れておきましょう。