SMSを利用した二要素認証 (AuthTwilioプラグイン)

PowerCMS X では、電子メールを利用した2段階認証を標準でサポートしていますが、AuthTwilioプラグインを利用することで、Twilio SMSを利用した2要素認証(MFA)をサポートします。

全般設定で2要素認証を有効化する

SMSを利用して認証コードを送信

準備

composer.json

{
    "require": {
        "twilio/sdk": "dev-main"
    }
}

composer update を実行し、環境変数「composer_autoload」に vendor/autoload.php へのパスを指定

$ composer update

  • プラグインを有効化し、システムの設定で「2段階認証」にチェックを入れて設定を保存してください。
  • このプラグインの利用については Twilio のアカウントが必要です。
  • アカウントがない場合、Twilio にサインアップしてアカウントの設定をしてください。
  • トライアルアカウントの場合、検証された電話番号(Verified Caller IDs)にのみ送信できます。
  • トライアルアカウントの場合、一部の高コストおよびプレミアムアクセス番号には、デフォルトでは送信できません。
  • 無料トライアル電話番号から SMS を送信すると、「Sent from a Twilio Trial account」で始まるメッセージが挿入されます。このメッセージは、アップグレード後に削除されます。
  • 会員専用サイトで利用する場合、必ずプラグイン「Members」を先に有効化し、スキーマアップグレードを行ってください(※)。
  • Twilio に関わる内容についてはアルファサード株式会社ではサポート対象外となります。あらかじめご了承ください。

※「AuthTwilio」を有効化済みで後からプラグイン「Members」を有効にする場合、以下の点に注意してください。

  • プラグイン「Members」を有効化しても、メンバーモデルに「携帯電話番号」入力欄は追加されません。
  • プラグイン「AuthTwilio」を無効化してから再度有効化するとメンバーモデルに「携帯電話番号」入力欄が追加されます。
  • プラグイン「AuthTwilio」の無効化時に追加されたカラムを削除したい時は、環境変数「authtwilio_remove_column」に true を指定してからプラグインの無効化を行ってください。
  • ただし、「authtwilio_remove_column」を true にしてプラグインを有効化後に無効化するとすでに追加されたユーザーモデルの「携帯電話番号」入力欄が一度消えてしまいます(保存された値の復活はできません)。

プラグイン設定

システムプラグイン設定で、以下を設定してください。

  • アカウントSID : Twilioのダッシュボードの「アカウントSID」を登録します。
  • 認証トークン : Twilioのダッシュボードの「AUTHTOKEN」を登録します。
  • 発信元電話番号 : Twilioから送信できる送信元の国際電話番号を入力してください(例:+122XXXXXXXX)。
  • モデル : 2段階認証を利用するモデルをチェックしてください。プラグイン「Members」が有効でない場合「メンバー」チェックボックスは表示されません。
  • 電子メールでも送信する : SMSとあわせて電子メールでも確認コードを送信する場合にチェックを入れてください。

ユーザーとメンバーの設定

プラグインを有効化すると、ユーザーとメンバー(Memberプラグインを利用している場合)に「携帯電話番号」入力欄が追加されます。
ここに、SMSを受信する携帯電話の国際電話番号を入力してください(例:+8190XXXXXXXX)。
この欄に入力のない場合、電子メールアドレス宛に確認コードが送信されます。
設定が完了したら、ログインを行い SMS で確認コードが送信できるか確認してくだい。

確認コード SMSのテンプレートのカスタマイズ

デフォルトのテンプレートは下記にあります。

PowerCMSX/plugins/AuthTwilio/tmpl/email/confirmation_code_sms.tmpl

システムにベースネーム「confirmation_code_sms」クラス「メール」としてビューを作成すると、そのテンプレートが代わりに使われるようになります。
以下はデフォルトのビューの内容です。SMSの文字数制限を超えないように注意してください。

<mt:trans phrase="%s Confirmation Code is '%s'." params="'$appname','$confirmation_code'" component="AuthTwilio">

※ Twilio は Twilio, Inc.の商標または登録商標です。