追記:Joomla 4.2 から Multi-factor Authentication(多要素認証)が新たに導入され、本記事の「2段階認証」は、この多要素認証に統合されました。

Joomla! における2段階認証では、YubiKeyGoogle認証Google Authenticator)にコアシステムで標準対応しています。
本ページでは、別途ハードウエアを用いず、スマホアプリで対応可能な Google認証 を利用した解説を行います。 なお、この2段階認証は Joomla 3.2.0以降から利用可能となっています。

2段階認証
Two-Factor Authentication

2段階認証

2段階認証とは?

30秒毎に更新される6桁のセキュリティーコードを使ってサイトへのログインを安全にするものです。常に変化するコードを第三者が取得するのは困難であるため、安全性が高まります。

2段階認証を利用するには?

サイト管理者側の設定:

まず最初に、プラグイン管理で「2段階認証 - Google認証」(種類:twofactorauth)を有効化する必要があります。この際、この2段階認証の有効先(サイトセクション設定)を『フロントエンド(閲覧者側)』『バックエンド(管理者側)』または『両方』から選択し限定することができます。

ここでは、サイト管理者側で「2段階認証 - Google認証」を有効化し、サイトセクション設定をフロントエンド(または両方)にしていることを前提とします。

また、会員がJoomla! のユーザー「プロフィール」ページにアクセスできるよう準備しておく必要があります。
通常これは会員用メニューとして一般閲覧者がアクセスできない設定にします。

会員側の設定:

まず最初に、登録アカウント情報(ユーザ名/パスワード)を使ってサイトにログインします。
会員用メニューからプロフィールページにアクセスすると、ページ内に「2段階認証」セクションがあります。認証方法のプルダウンから「Google 認証」を選択すると、これを利用するための手順(1〜3)が示されます。

手順1のリンク先からアプリを入手します。
または、例えば、iPhone の場合は、アプリ「App store」を起動して「Google Auth」を検索すれば簡単にアプリ「Google Authenticator」が見つかります。

アプリ「Google Authenticator」のスマホへのインストールが完了したら、アプリを起動します。
アプリの画面右下にあるプラスボタンをタップして、「QR コードをスキャン」ボタンが出てきます。それをタップして、サイトページ内:「2段階認証」セクション手順2に表示されている QRコードを読み取ります。

すると直ちに6桁の数字が確認できるようになります。その6桁の数字がセキュリティーコードです。
このセキュリティーコードには有効期限があるため、数字横にはタイマーが表示されています。

「2段階認証」セクション手順3内のセキュリティコード欄にアプリに表示されている6桁の数字を入力し、「保存」ボタンをクリックすれば、設定は完了です。

なお、アプリ「Google Authenticator」の6桁の数字は、読みやすくするために3桁+スペース+3桁という表示となっていますが、セキュリティコードの入力時にこのスペースを含める必要はありません。連続して6桁の数字を入力すればOKです。

アプリ「Google Authenticator」内の6桁の数字はダブルタップするとコピーできます。

QRコードを使った方法で上手くいかないと思われる場合は「キー」を使った設定も可能です。
アプリの画面右下にあるプラスボタンをタップして、「セットアップ キーの入力」をタップし、サイト内「2段階認証」セクションに表示されている「キー」を入力することで、QRコードと同様な設定が完了します(アカウントは任意の名称を付けても大丈夫です)。

2段階認証の挙動を確認する

上記設定が完了したら、サイトから一旦ログアウトしてみましょう。
そして、登録アカウント情報(ユーザ名/パスワード)を使って再度サイトへのログインを試みてください。すると、ユーザ名/パスワードだけではログインができず、エラーが表示されるはずです(もしエラーが表示されなければ、2段階認証設定が正しく完了していません)。

続いて、登録アカウント情報に加えて、アプリ「Google Authenticator」から取得したセキュリティーコードを入力してログインを試みてください。今度はログインに成功するはずです。

2段階認証によるセキュリティー強化

前段のログインテストを実施して頂ければお分かりの通り、この「2段階認証」を有効にすることの意味は、ログイン時のセキュリティーが大幅に強化されるということです。

万が一、あなたの登録アカウント情報(ユーザ名/パスワード)が流出してしまったとしても、刻々と変わるセキュリティーコードがなければログインできませんので、有能なハッカーといえどもこれを突破することは至難の業であり、諦めるはずです。

セキュリティーコードに対する保険

この2段階認証により、ログイン時のセキュリティーは大幅に強化されることは間違いないのですが、もしかするとこのような疑問を持つ方がおられるかもしれません。

アプリ「Google Authenticator」が利用できる状況にない場合はどうしたら良いのか?

万一に備えるワンタイムパスワード

もう一度、サイト内の「プロフィール」ページの「2段階認証」セクションにアクセスしてみてください。
下側にスクロールをすると「ワンタイムパスワード」と題したエリアに数字が並んでいることを確認できるはずです。
ハイフンで接続された12桁をセキュリティーコードとして利用することができます。

このワンタイムパスワードを保管・管理しておけば、万一アプリ「Google Authenticator」が利用できない状況においてもログインは可能となります。
但し、一度でもこのワンタイムパスワードを使用したならば、保管している情報を最新のものに更新することを忘れないでください。一度でも使用すれば、これまでの保管情報は無効となり新ワンタイムパスワードが発行されます。

アプリ「Google Authenticator」の優位性

例えば、Yahoo! を利用されている方であればイメージしやすいかと思いますが、セキュリティーコードをメールやSMSで送信する方式が一般的によく利用されています。この方式でもセキュリティーレベルは高く十分なのですが、時折、コードが届くまでにかなり待たされることがあり、『スムーズなアクション』という観点では課題を残します。

アプリ「Google Authenticator」を利用した2段階認証の場合は、待たされることによるストレスは一切ありません。
メールやSMSによる通知方式よりも優位性があるように思われますが、いかがでしょうか・・。