Twilio VerifyのTry it outを使ってノーコードでSMS二要素認証を試してみた
こんにちは、昴です。
今回は「Twilio VerifyのTry it outを使ってSMS二要素認証(2FA)を実装してみた」というテーマで、コードを一切書かずに最小構成で機能を試す手順をご紹介します。
はじめに
Twilioは電話やSMS、チャットなどのコミュニケーション機能を組み込むためのクラウドベースのAPIプラットフォームです。TwilioのAPIを利用することで通信ソリューションを自由にカスタマイズして構築することができます。
セキュリティの向上に欠かせない二要素認証(2FA)ですが、実装が難しそうと感じる方も多いのではないでしょうか。しかし、TwilioのTwilio Verifyを使えば、ワンタイムパスワード(OTP)の発行やSMS送信、コードの照合といった複雑な仕組みをTwilio側がすべて巻き取ってくれます。
今回はエンジニアリング初心者の方でも簡単に試せるように、プログラムは書かず、Twilioコンソールの「お試し機能(Try it out)」を使って実際のSMS認証を体験してみます。
前提・検証環境
本記事の手順を進めるにあたり、以下の環境および権限が必要です。
- Twilioアカウントが開設済みであること
- SMSを受信できるご自身のスマートフォン(携帯電話)があること
設定
それでは、Twilioコンソール画面を操作して設定を行っていきます。
Verify Serviceを作成する
まずはTwilioコンソール上で、認証フロー全体を管理するための「Verify Service」を作成します。
Twilioコンソールのサイドバーから Verify > Services へ移動し、「Create New」ボタンをクリックします。

設定ウィンドウが表示されるので、以下の項目を入力・設定します。
- Friendly name:分かりやすい名前を入力します(例:My-Verify-Service。ここで付けた名前が、実際のSMSメッセージ内に「あなたの My-Verify-Service 認証コード:…」という形で表示されます)
- Authorize the use of friendly name.:チェックを入れます。
- Verification channels:認証に使用する手段を選びます。今回はSMS のトグルボタンをオン(青色)にし、それ以外はオフにしておきます。
設定ができたら、右下の「Continue」をクリックします。

次に「Enable Fraud Guard」という設定画面が表示されます。
これはSMSの不正送信を自動で検知・ブロックし、意図しない高額課金を防いでくれる非常に重要なセキュリティ機能です。デフォルトで「Yes(有効)」が選択されているので、そのまま右下の「Continue」をクリックします。

Service settings画面の解説
「Continue」をクリックすると、作成されたServiceの「Service setting」という設定画面に移動します。

画面には「Service SID(VAから始まる文字列)」などが表示されていますが、実はノーコードでテストをするだけであれば、この画面で特に設定を変更したり入力したりする必要はありません。
Twilio Verifyは、この「Service」という箱を作った時点で、裏側で「認証コードの発行」「有効期限の管理」「コードの照合」といった二段階認証に必要な基本セットを自動的にすべて準備してくれています。自前でサーバーを用意したり、データベースを構築して面倒な管理をする必要は一切ありません。
電話番号の接続について
通常のTwilioの機能(Programmable Messagingなど)では、自分で購入したTwilioの電話番号をシステムに紐付ける作業が必要になります。
しかし、このVerifyサービスを利用する場合、デフォルトではTwilio側があらかじめ用意している共通の番号ルートを使ってSMSが自動送信される仕組みになっています。
そのため、「まずは試してみたい」という段階であれば、ご自身で個別のTwilio電話番号を購入して紐付ける必要はありません。(今回は一番簡単な最小構成のため、何も紐付けずに試していきます)
確認
設定の確認ができたので、コンソールに標準で用意されている「Try it out(お試し機能)」を使って、実際に自分のスマホへSMSを送り、認証が通るかを確認(テスト)してみます。
- Try it out
左側のメニューから Verify > Try it out をクリックします。
「Start building」を選択するとポップアップが表示されるため、先ほど作成したService名が表示されていることを確認し、右下の「Continue my Last Tutorial」をクリックして進みます。

- 宛先を入力してコードを送信する
「Start building verifications」というテスト画面が表示されます。Select channel にSMSが設定されていることを確認し、「To phone number」を受信するご自身のスマホの電話番号を選択します。入力できたら、すぐ下にある「Send test」ボタンをクリックします。

番号が選択肢に表示されない場合、「Add phone number 」を選択してご自身の電話番号の認証を済ませる必要があります。Add a Caller IDでご自身の番号を選択し、Verify numberより認証を行います。無事認証ができると「To phone number」の選択肢に表示されます。

- スマホでSMSを受信する
ボタンを押して数秒待つと、入力したスマホ宛てにTwilioからSMSが届きます。
「あなたの My-Verify-Service 認証コード: ○○○○○○」といったメッセージと一緒に、6桁の数字が記載されているはずです。

- コードを検証する
「Send test」を押した後、画面の指示に従ってコードの答え合わせ(検証)のステップに進みます。スマホに届いた6桁の数字を入力欄に入力し、「Verify」をクリックします。

検証が完了すると、画面にAPIの実行結果(コードブロック)が表示されます。
一番上に「200 OK」と表示され、結果の中に 「status: approved」、「valid: true」と記載されていれば、SMS認証のテストは無事成功です!

また、わざと間違ったコードを入力してボタンを押すと、ステータスが 「pending」 のままになったり「valid: false」が出たりして、正しく弾かれることも確認できます 。

もしコードを入力するまでに時間が空いてしまうと(10分経過)、「404 NOT FOUND」というエラー画面が表示されます。これは不具合ではなく、Twilioのセキュリティ機能です。Twilio Verifyでは不正利用を防ぐため、「10分経過」「承認済み」「入力上限到達」のいずれかを満たすと、認証データが即座に削除される仕様になっています。実際にTry it outでも10分間放置すると下記のように表示されます。

実際の運用では
今回はTwilioコンソール上から手動でSMSを送信・検証しましたが、実際のシステムに組み込む際は、アプリケーションからAPIを経由してユーザーの電話番号宛てに認証コードを送信し、入力されたコードを再度APIで照合する一連の実装へと置き換えて運用します。Node.jsやPython、PHPなど、お使いの言語向けの「Twilio公式SDK」をインストールし、ダッシュボードで確認した「Account SID」「Auth Token」、そして今回作成した「Service SID」の3つを使ってAPIを実行します。
まとめ
今回はTwilio VerifyのTry it outを使って、コードを書かずに最小構成でSMS二要素認証(2FA)を試してみました。
自前で有効期限の管理やSMS送信の仕組みを構築するのは大変ですが、Twilio Verifyを使えばこれらのセキュリティの仕組みがすでに用意されており、驚くほど簡単に導入できることが体感できたかと思います。
本ブログが少しでも参考になれば幸いです。
告知
Twilio/SendGridセミナーを毎月開催しています
クラスメソッドでは毎月Twilio/SendGridのセミナーを実施しています。
クラスメソッドではTwilio/SendGridのセミナーを毎月開催しております。いずれもTwilio及びSendGridを良く知らない方向けに基本的な部分から解説する内容となっておりますので、今後Twilio/SendGridの導入を検討している方や、既に導入済で改めて基本的な部分を勉強したいと考える方は、是非お気軽にご参加いただければと思います。






