PowerCMS X用の二要素認証(TOTP: Time-based One-Time Password)プラグインです。

このプラグインは、Google Authenticator、Microsoft Authenticator、Okta Verifyなどの認証アプリを使用した二要素認証機能を提供します。ユーザーのログイン時に、パスワードに加えて時間ベースのワンタイムパスワードによる認証を要求することで、アカウントのセキュリティを向上させます。
※メール送信を用いた二要素認証・AuthTwilioプラグインによる二要素認証との併用はできません。
| TOTP認証 | RFC 6238準拠の時間ベースワンタイムパスワード認証 |
|---|---|
| QRコード対応 | 認証アプリへの簡単な登録 |
| バックアップコード | 認証アプリが使用できない場合の代替ログイン手段 |
| ユーザー個別設定 | 各ユーザーが個別に二要素認証を設定可能 |
| 管理者機能 | リストアクションからの一括設定削除 |
プロジェクトのルートディレクトリなどで以下のComposerコマンドを実行します:
composer require chillerlan/php-qrcode
composer require spomky-labs/otphp
初めてcomposerを使用する場合は環境変数composer_autoloadにautoload.phpのパスを指定してください。
プラグインに付属のツールを使用して、暗号化用のシークレットキーを生成します:
php path/to/plugins/TOTPAuthenticator/tools/make_secret_key.php
実行すると以下のような64文字の16進文字列が出力されます:
Secret key: 1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t1u2v3w4x5y6z7a8b9c0d1e2f
重要: このシークレットキーは厳重に管理してください。漏洩した場合や紛失した場合、すべてのユーザーのTOTP設定をやり直す必要があります。
powercmsx/config.jsonに以下の設定を追加します。totpauthenticator_issuer(認証アプリに表示される発行者名)の値は適宜変更してください。
"two_factor_method": "totp",
"totpauthenticator_secret_key": "[手順2で生成したシークレットキー]",
"totpauthenticator_issuer": "PowerCMS X"
二要素認証(TOTP)が未設定の場合に管理画面の操作を許可しないようにする場合、以下の環境変数を追加します。
"two_factor_auth_required": true,
管理画面の右上にある「設定」を開き、「2段階認証を利用する」にチェックを入れて二要素認証を有効化します。

認証アプリが使用できない場合(端末の紛失・故障等):
A3F7-9K2P)を入力しますバックアップコードは一度使用すると再利用できません。残りが少なくなった場合は、二要素認証を再設定してください。
管理者は、他のユーザーの二要素認証設定を解除できます:

シークレットキーの管理
totpauthenticator_secret_keyは絶対に公開しないでくださいバックアップコードの保管
HTTPSの使用
| 項目 | 内容 |
|---|---|
| 認証方式 | TOTP (Time-based One-Time Password Algorithm, RFC 6238) |
| ハッシュアルゴリズム | SHA-1 |
| 時間窓 | 30秒 |
| コード長 | 6桁 |
| バックアップコード | 8個(初回設定時に生成) |
| 暗号化 | Sodium (libsodium) を使用した暗号化 |