TwoFactorAuthenticationプラグイン

はじめに

TwoFactorAuthenticationプラグインは、MTに2要素認証(2段階認証)の機能を追加することで、セキュリティを強化し、アカウントの不正使用を防止することができます。

2要素認証を有効にすると、通常のユーザ名/パスワードによるログインの後、確認コードの入力が求められるようになります。Google Authenticator等のスマートフォン上のアプリケーションが生成する、1度限り有効の確認コードを入力しなければ、ログインが完了しません。つまり、知っている情報(ユーザ名/パスワード)と、持っている情報(スマートフォン)がそろわなければログインできない、ということになります。

その他、スマートフォンにアクセスできない、あるいは紛失した場合でも、一時的にログインできるよう、リカバリーコードを生成する機能も提供しています。

スマートフォン上の認証アプリケーションで確認コードを生成する方法に加えて、登録メールアドレスへ確認コードを送信する方法も選択可能です。

2要素認証に成功したブラウザを「信頼済み端末」として記憶し、次回以降の確認コード入力を省略することができます。前回ログイン時より指定日数経過後の再認証や、IPアドレスが変わった際の再認証もあわせて設定できます。

スマートフォンを紛失したり買い替えた場合に備え、リカバリーコードによるログイン後の本人操作で認証アプリを再設定する導線、システム管理者が他ユーザーの2要素認証をリセットする導線、メール認証利用中のメールアドレス変更を新メールアドレス宛の確認コードで保護する仕組みも提供しています。

対応バージョン

インストール

プラグインのアーカイブファイルを展開すると、以下のディレクトリが作成されます。

TwoFactorAuthentication
├── docs
└── plugins
    ├── DisableTwoFactorAuthentication
    │   └── DisableTwoFactorAuthentication.pl
    └── TwoFactorAuthentication
        ├── TwoFactorAuthentication.pl
        ├── extlib
        ├── lib
        └── tmpl

「TwoFactorAuthentication/plugins/TwoFactorAuthentication」ディレクトリをMTのプラグインディレクトリへコピーしてください。

注意: 「DisableTwoFactorAuthentication」ディレクトリはコピーしないでください。こちらはログインできないなどの非常時に、一時的にプラグインを無効にするためのプラグインです。

プラグイン設定画面にTwoFactorAuthenticationが表示されていれば、インストールは完了です。

使い方

以下の手順で設定を行います。

  1. スマートフォンに認証アプリをインストールする。
  2. プラグイン設定を行う。
  3. 2要素認証を有効にする。
  4. ログインする。

その他必要に応じて以下も行ってください。

スマートフォンに認証アプリをインストールする

メールによって確認コードを送信する方法の場合、この手順は必要ありません。次の「プラグイン設定を行う」へ進んでください。

お使いのスマートフォンに、認証アプリがインストールされていない場合は、この先の手順に進む前にインストールしておいてください。以降の手順では、Google Authenticator (iOS版 / Android版)を例に説明しますが、他の認証アプリをお使いの場合は、適宜読み替えて設定してください。

プラグイン設定を行う

システムプラグイン設定画面を開きます。

「有効」にチェックを付けます。

「最後の認証から[1]日経過後に再認証する」場合は、日数を変更して、チェックを付けてください。

「信頼済み端末」を有効にすると、2要素認証に成功したブラウザに対してトークンをCookieとして発行し、次回以降の確認コード入力を省略します。「信頼済み端末の有効期限」(デフォルト30日)と「1ユーザーあたりの信頼済み端末の上限」(デフォルト5)を設定できます。上限を超えた場合は、最後に使用された日時が最も古い信頼済み端末から自動的に削除されます。

「強制ポリシー」では、2要素認証の利用範囲を全ユーザに対してどの程度強制するかを選択できます。以下の4つから選択できます。

「全ユーザーにメール認証を必須にする」を選択した場合、メール認証を強制する前に、SMTPとメールテンプレートの設定を完了してください。設定が不十分なまま強制を有効にすると、ユーザーがログインできなくなる恐れがあります。

強制ポリシーを「任意」以外に設定すると、未設定ユーザーがログインした際に2要素認証のセットアップ画面へ自動的に誘導され、設定が完了するまでMTの管理画面を利用できません。また、ユーザー編集画面から2要素認証を無効にすることもできなくなります(詳細は「2要素認証を無効にする」「認証方法を変更する」の各節を参照してください)。

「IPアドレスが変わった場合に再認証する」にチェックを付けると、信頼済み端末であっても、前回使用時とIPアドレスが異なる場合は再度確認コードの入力を求めます。

「サイト名」には、デフォルトでMTが稼働しているホスト名が表示されています。この項目は、スマートフォン上で設定する認証アプリに表示される名称で、プラグイン自体の動作には影響しませんので、分かりやすい名称に変更することをおすすめします。

確認コードを送信するメールの件名と本文を編集することができます。本文を編集する場合は、「インストール」ボタンを押して、メールテンプレートをインストールしてください。「確認コード」という名前のメールテンプレートがインストールされますので、これを編集してください。

「変更を保存」します。

2要素認証を有効にする

MTにログインし、画面右上のユーザ名をクリックし、ユーザ情報の編集画面を開きます。

画面中ほどにある、2要素認証のステータスが無効になっていますので、「2要素認証を有効にする」リンクをクリックします。

認証方法として「認証アプリ」を選択した場合、以下のダイアログが開きますので、表示されたQRコードを認証アプリでスキャンするか、シークレットコードを直接入力して、認証アプリに登録します。

認証アプリが確認コードを生成するので、それを入力し、有効ボタンを押します。

認証方法として「メール」を選択した場合、以下のダイアログが開きますので、メールで送信された確認コードを入力し、有効ボタンを押します。

メールが届かない場合は、メールアドレスが正しいか、迷惑メールフォルダに入っていないか等を確認の上、「確認コードを再送信」ボタンを押下して再送信してみてください。

2段階認証が有効になると、リカバリーコードが表示されますので、安全な場所に保存してください。リカバリーコードは、スマートフォンを紛失したり、スマートフォンなしでログインする必要がある場合に使用します。

閉じるボタンを押して、ユーザ情報の編集画面に戻ります。

強制ポリシーが「任意」以外に設定されている場合、未設定のユーザーがログインすると、自動的に2要素認証のセットアップ画面が表示されます。設定が完了するまで、他の管理画面を開くことはできません。認証方法が強制されている場合は、強制された方式(認証アプリまたはメール)でのセットアップのみが可能です。

ログインする

ログインする場合は、通常通りユーザ名/パスワードを入力します。

ユーザ名/パスワードが正しい場合、続いて確認コードの入力が求められます。

スマートフォンの認証アプリで生成した、またはメールで送信された6桁の確認コードを入力してください。あいだのスペースは入力してもしなくてもかまいません。

認証方法として「メール」を選択している場合、「確認コードを再送信」リンクが表示されますので、メールが届いていない場合に確認コードを再送信することができます。

スマートフォンの紛失など、認証アプリにアクセスできない場合は、確認コードの代わりにリカバリーコードを入力してもログインが可能です。

1度使用したリカバリーコードは、再使用できません。全てのリカバリーコードを使い切った場合は、リカバリーコードを再度生成してください。

認証方法を変更する

2要素認証を有効にしている場合、後から認証方法(認証アプリ/メール)を変更することができます。ユーザ情報の編集画面で、「認証方法を変更する」リンクをクリックしてください。

新しい認証方法に「認証アプリ」を選択した場合、QRコードと新しいシークレットキーが表示されます。認証アプリで読み込んでから、生成された確認コードを入力し、「認証方法を変更する」ボタンを押します。

新しい認証方法に「メール」を選択した場合、登録メールアドレス宛に確認コードが送信されます。届いたコードを入力し、「認証方法を変更する」ボタンを押します。メールが届かない場合は「確認コードを再送信」ボタンで再送できます。

変更が完了すると、新しいリカバリーコードが再生成されます。あわせて、現在使用しているブラウザを除くすべての信頼済み端末は失効しますので、必要に応じて他の端末から再度ログインし直してください。

強制ポリシーで認証方法が固定されている場合(「全ユーザーに認証アプリを必須にする」「全ユーザーにメール認証を必須にする」)、現在の認証方法と強制方法が一致しないと、ユーザ情報の編集画面に「現在の認証方法はシステムポリシーと一致していません。」という警告が表示され、ログイン直後に自動的に認証方法変更画面へ誘導されます。

認証アプリを再設定する

スマートフォンを買い替えた、あるいは紛失して新しい端末に認証アプリを移したい場合に、本人の操作で認証アプリ(の秘密鍵)を再設定することができます。

2要素認証が有効で、現在の認証方法が「認証アプリ」のとき、ユーザ情報の編集画面に「認証アプリを再設定する」リンクが表示されます。

リカバリーコードでログインした直後でも、本人確認が済んでいれば(2要素認証の検証画面を通過していれば)このリンクから新しいシークレットキーへ切り替えできます。

「認証アプリを再設定する」リンクをクリックすると、新しいQRコードとシークレットキーが表示されます。新しい認証アプリで読み込み、生成された確認コードを入力して「認証アプリを再設定する」ボタンを押してください。

成功するとリカバリーコードが再生成され、現在使用しているブラウザを除くすべての信頼済み端末は失効します。古いスマートフォン上の認証アプリで生成した確認コードはそれ以降使用できなくなります。

管理者が他ユーザーの2要素認証をリセットする

システム管理者は、他のユーザーの2要素認証をリセットすることができます。リセットされたユーザーは2要素認証が無効化され、次回ログイン時に強制ポリシーに従って再度セットアップを求められます(強制ポリシーが「任意」の場合は無効化のみ)。

システム管理者として、対象ユーザーのユーザ情報の編集画面を開きます。2要素認証が有効なユーザーに対してのみ、「2要素認証をリセットする」リンクが表示されます(自分自身に対してはリセットせず、本人による「認証アプリを再設定する」を使ってください)。

「2要素認証をリセットする」リンクをクリックして確認に「OK」を押すと、対象ユーザーの2要素認証の有効化状態、秘密鍵、リカバリーコード、信頼済み端末がすべて削除され、対象ユーザーの既存ログインセッションは無効化されます。操作は監査ログ(システムログ)に記録されます。

強制ポリシーが「全ユーザーに2要素認証を必須にする」「全ユーザーに認証アプリを必須にする」「全ユーザーにメール認証を必須にする」のいずれかに設定されている場合は、リセット後のユーザーは次回ログイン時に強制ポリシーに沿った再セットアップが必要になります。

メール認証利用中のメールアドレスを変更する

2要素認証の認証方法を「メール」にしている場合、登録メールアドレスは実質的な認証デバイスとなります。そのため本人がメールアドレスを変更しようとした際には、新しいメールアドレス宛に確認コードを送信し、受信できたことを確認したうえで変更を確定する仕組みになっています。

ユーザ情報の編集画面でメールアドレスを書き換えて「変更を保存」すると、新しいメールアドレス宛に確認コードが送信され、確認画面に遷移します。

新しいメールアドレスに届いた確認コードを入力し、「メールアドレスを確認する」ボタンを押すと、変更が確定します。確認が完了するまでメールアドレスは保存されません。確認画面が10分以内に完了されなかった場合、または確認コードを5回以上失敗した場合は変更は破棄され、再度ユーザ情報の編集画面からやり直す必要があります。

確認コードが届かない場合は「確認コードを再送信」ボタンを押下してください。連続して再送信できないよう、ボタンには再送可能までの残り秒数が表示されます。

メールアドレス変更を確認するために、メールアドレス以外のプロフィール項目もあわせて変更していた場合、初期実装ではメール以外の変更は保存されません。必要に応じてメール確認完了後にあらためて編集してください。

システム管理者が他ユーザーのメールアドレスを変更する場合は、確認コードによる検証はスキップされますが、対象ユーザーの信頼済み端末はすべて失効し、操作内容は監査ログに記録されます。

2要素認証を無効にする

強制ポリシーが「任意」以外に設定されている場合、無効化することはできず、ユーザ情報の編集画面に「2要素認証を無効にする」リンクは表示されません。利用を停止するにはシステム管理者が強制ポリシーを「任意」へ変更する必要があります。

2要素認証を利用しない場合は、「2要素認証を無効にする」リンクをクリックしてください。

無効にするかどうかの確認のアラートが表示されますので、OKをクリックします。

2要素認証が無効になります。

リカバリーコードを表示する

リカバリーコードを表示する場合は、「リカバリーコードを表示する」リンクをクリックします。

ダイアログが開き、リカバリーコードが表示されますので、安全な場所に保管してください。

一度使用したリカバリーコードは打ち消し線が入ります。全てのリカバリーコードを使い切った場合は、再度生成してください。

リカバリーコードを再度生成する

リカバリーコードを再度生成するには、リカバリーコードを表示した後、「新しいリカバリーコードを生成する」ボタンを押してください。

新しいリカバリーコードが生成されますので、安全な場所に保管してください。

信頼済み端末を管理する

システムプラグイン設定で「信頼済み端末」を有効にしている場合、ユーザ情報の編集画面に表示される「信頼済み端末を管理」リンクから、現在登録されている信頼済み端末の一覧を確認したり、個別に解除したりすることができます。

共有端末や、利用しなくなったブラウザがある場合は、ここから該当する信頼済み端末を解除してください。「すべて解除」を選ぶと、そのユーザに登録されているすべての信頼済み端末を一度に無効化できます。

解除後は、対象のブラウザから次回ログインする際に、再度確認コードの入力が求められます。

確認コードが受け付けられずログインできない場合の対応

以下の方法で対処してください。

プラグインのアンインストール方法

プラグインをアンストールする場合は、システムプラグイン設定で「初期化」ボタンを押して、全ての設定を削除してから、プラグインファイルを削除してください。

初期化せずにプラグインファイルを削除した場合、後でプラグインを再インストールした際に、以前の設定が残っているため、ログインできないなどの不具合を引き起こす可能性がありますので、ご注意ください。

注意事項

ライセンス

更新履歴

このプラグインの利用、及び著作権や保証について

このプラグインの著作権はカーリーブラケット株式会社が所有しています。著作権者の許可なく本プラグインを使用、改変、再配布することはできません。

連絡先

作者:カーリーブラケット株式会社