何かと話題の二段階認証をAuth0で実装してみた(SMS編)

2019.10.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWS事業本部インテグレーション部のいわほりです。

2019年の残りも3ヶ月を切りましたが、今年は「二要素認証」・「二段階認証」という言葉をよく耳にしました。そこで、Auth0でSMSを使った二要素認証を実装してみました。

 

本記事に記載する設定は、

  • コーディング不要
  • 無料のアカウントで実施可

ですので、非エンジニアの方もお手元の環境で実際に動きを確認いただければと思います。

 

事前準備

まずは、こちらの記事を参照いただき、

  • アカウントの登録
  • テナントの作成
  • サンプルアプリケーションの作成・設定・起動
  • 新規ユーザ登録

を行ってください。

 

この手順で登録したユーザは、メールアドレスとパスワードの入力だけでログイン可能です。

ここにSMSで送信されるコードを用いた認証を追加します。

設定の流れとしては、

  1. SMS認証を使用できるようにする
  2. 毎回のログイン時に二要素認証を適用する

となります。

 

設定してみた

1.SMS認証を使用できるようにする

1.「Multifactor Auth」⇒「SMS」でトグルをオンにする。

以上です。

 

  • 無料プランの場合、SMS送信数に上限があります(本記事公開時で100)。上限の制限を解除するには、Twilioのアカウントを取得し、所定の設定を行う必要があります。なお、Twilioも無料でアカウントを作成することができます。
  • 「Always require Multi-factor Authentication」を有効にすると、全てのアプリケーション・全てのログインで多要素認証を強制的に適用させることが可能になります。(今回は有効にしておりません)

 

2.毎回のログイン時に二要素認証を適用する

1.「Rules」⇒「+ CREATE RULE」ボタンを押下

 

2.「Require MFA once per session」を選択

 

3.「SAVE CHANGES」を押下

  • このルールは編集不要です。デフォルトで表示される内容をそのまま保存するだけです。

 

これで設定は完了です。

なお、全てのルールは削除することが可能ですが、トグルをオフにすることによって一時的に無効にすることもできます。

 

ログインしてみた

初回ログインと2回目以降のログインでは、フローが少し異なります。これは一部のステップを2回目以降のログインでは行わないためです。

冒頭に『(★)』がついているステップが初回ログイン時のみ行うステップです。つまり、

  • 2回目以降のログインでは、初回に登録した電話番号に6桁のコードが自動で送信される
  • 「recovery code」は初回ログイン時のみ表示される(※正しくは「初回ログイン時と使用の都度表示される」/(Step5)を参照)

となります。

 

(Step1)サンプルアプリケーションを起動し、「Login」を押下

 

(Step2)メールアドレスとパスワードでログイン

 

(Step3)(★)電話番号を入力

  • この電話番号登録を管理者側で事前に実施することはできません(本記事公開時)。

 

(Step4)SMSで送信される6桁のコードを入力

初回ログイン時と2回目以降のログイン時では表示内容が若干異なりますが、実施オペレーションは同じです。

  • このコードは一定時間内に入力する必要があります。タイムアウトになった場合は、再度ログインすると、新規の6桁のコードが送信されます。
  • 2回目以降のログインでは6桁のコードではなく、(Step5)で発行される「recovery code」を使ってログインすることも可能です。
  • SMSで送信される文面は以下のとおりです。

(初回ログイン時)

488895 is your verification code for mylab-tenant-01-base. Please enter this code to verify your enrollment.

(2回目以降のログイン時)

195430 is your verification code for

 

(Step5)(★)「recovery code」をメモして、「I have safely recorded this code」にチェックを入れて次に進む

  • SMSで送信される6桁のコードだけを使用し続けるのであれば、「recovery code」が発行されるのは初回ログイン時のみです。
  • (Step4)で「recovery code」を使用してログインすると、ログイン後に新規の「recovery code」が発行されます。
  • つまり、6桁のコードも「recovery code」もワンタイムパスワードになります。

 

これでログイン完了です。

 

ユーザデータを見てみた

ログイン完了後に「Profile」を見ると、二要素認証されていることがわかります。

 

また、Dashboard画面でユーザの「Details」を見ると、「Multi-Factor Authentication」に関する登録状況を確認することができます。「SMS」と「recovery code」が有効になっていることがわかります。

  • 「Reset MFA」を押下すると、MFAに関する登録情報をリセット(削除)することができます。

 

まとめ

短期間での構築が可能であることがAuth0の「売り」の一つですが、一般公開サービスにおいて必須になりつつある二要素認証も簡単に実装できることがわかりました。ぜひご検討ください。

 

以上です。最後まで読んでいただき、ありがとうございました。

 

関連

Emailを使った二段階認証についてはこちらの記事を参照ください。