Twilioブログ

Twilio Verifyを使った二要素認証(二段階認証)の実装方法

こんにちは、Twilio事業部のkatsu.tです。

本記事では二要素認証を素早く自分のプロダクトに組み込めるTwilio Verifyについてご紹介したいと思います。

目次

Twilio Verifyについて

Twilio Verifyは、Twilioが提供している二要素認証の仕組みの一つで、認証コードの送信とコードの認証機能を提供しています。
Twilio Verifyを使うことで、自身のプロダクトに素早く二要素認証の機能を組み込むことが可能です。

Twilio Verifyの使い所

Twilio Verifyは、一度のみの認証に使われることが多いです。
たとえば、新規ユーザー登録の際に電話番号を用いて、認証を行う場合です。

Twilio Verifyの実装方法

TwilioではNode.jsC#PHPPythonJavaRubyのSDKを用意しています。
本記事では最もシンプルでわかりやすいREST APIの利用方法とLaravel(PHP)を用いた利用方法、Laravel(PHP)を用いたクイックスタートをご紹介いたします。

事前準備

Account SID、Auth Tokenの取得

Twilioのコンソールにログインして、Account SIDとAuth Tokenを確認します。

Account SID、Auth Tokenの取得

Service SIDの取得

Verify Serviceを作成します。
まず、Verify画面を開きます。

Service SIDの取得

続いて、services画面を開き、「+」をクリックします。

Service SIDの取得2

Friendry nameを入力して「create」をクリックします。
このときのFriendly nameが認証コードを送信する際の「Verify service名」になります。

Service SIDの取得3

必要に応じてCode Lengthを修正します。

Service SIDの取得4
設定ができたら、「Save」をクリックします。
Service SIDの取得5

最後に、Service一覧に戻り、Service SIDを確認します。

Service SIDの取得6

REST API

Twilio Verifyは2つのAPIで構成されており、すごくシンプルに利用することが可能です。

認証コードの送信

認証コードを送信する手段は、電話、SMS、Eメールから選ぶことができます。
※Eメールを利用する際は、別途SendGridの設定が必要となります。詳しくはこちらをご覧ください。

以下APIを用いて認証コードの送信を行います。

curl -X POST https://verify.twilio.com/v2/Services/{Service SID}/Verifications \
--data-urlencode "To=+81xxxxxxxxx" \
--data-urlencode "Channel=sms" \
-u your_account_sid:your_auth_token

パラメータの設定値はこちらを参考に入力してください。

項目名 概要
{Service SID} 事前準備で取得したVerifyのサービスID
your_account_sid 事前準備で取得したAccount_SID
your_auth_token 事前準備で取得したAuth Token
To 認証コードを送りたい連絡先
電話番号 or メールアドレス
Channel call(電話) or sms(SMS) or email(Eメール)

 

 

 

 

 

 

 

 

認証コードを送信するとToに設定した連絡先に以下のような認証コードが届きます。
※本文は「あなたの{Verify service名}認証コード:」という形で送信します。

認証コードの送信

コードの認証

ユーザーに送信されたコードを認証するには以下APIを利用します。

curl -X POST https://verify.twilio.com/v2/Services/{Service SID}/VerificationCheck \
--data-urlencode "To=+81xxxxxxxxx" \
--data-urlencode "Code=123456" \
-u your_account_sid:your_auth_token

パラメータの設定値はこちらを参考に入力してください。

項目名 概要
{Service SID} 事前準備で取得したVerifyのサービスID
your_account_sid 事前準備で取得したAccount_SID
your_auth_token 事前準備で取得したAuth Token
To 認証コードを送った連絡先
電話番号 or メールアドレス
Code ユーザーに送信されたコード

Laravel(PHP)

続いて、Lavavelを用いたSDKのインストール方法と利用方法についてご紹介いたします。

SDKのインストール

$ composer require twilio/sdk

認証コードの送信

以下メソッドを用いて認証コードを送信します。

use Twilio\Rest\Client;

class Verification {
    function checkVerification($phone_number, $code) {
        // clientの初期化
        $client = new Client($account_sid, $auth_token);

        // コードの認証
        $verification_check = $this->client->verify->v2->services($this->verification_sid)
                ->verificationChecks
                ->create($code, ['to' => $phone_number]);
        if($verification_check->status === 'approved') {
            // 認証成功
        } else {
            // 認証失敗
        }
    }
}

変数の設定値はこちらを参考に入力してください。

項目名 概要
$service_sid 事前準備で取得したVerifyのサービスID
$account_sid 事前準備で取得したAccount_SID
$auth_token 事前準備で取得したAuth Token
$phone_number 認証コードを送りたい連絡先
電話番号 or メールアドレス
$channel call(電話) or sms(SMS) or email(Eメール)

コードの認証

use Twilio\Rest\Client;

class Verification {
    function checkVerification($phone_number, $code) {
        // clientの初期化
        $client = new Client($account_sid, $auth_token);

        // コードの認証
        $verification_check = $this->client->verify->v2->services($this->verification_sid)
                ->verificationChecks
                ->create($code, ['to' => $phone_number]);
        if($verification_check->status === 'approved') {
            // 認証成功
        } else {
            // 認証失敗
        }
    }
}

変数の設定値はこちらを参考に入力してください。

項目名 概要
$service_sid 事前準備で取得したVerifyのサービスID
$account_sid 事前準備で取得したAccount_SID
$auth_token 事前準備で取得したAuth Token
$phone_number 認証コードを送った連絡先
電話番号 or メールアドレス
$code ユーザーに送信されたコード

クイックスタート

構築

最後にLaravelを使ったクイックスタートをご紹介いたします。

1. ソースコードのダウンロード

gitを利用して、ソースコードをダウンロードします。
gitを利用していない方は、こちらよりソースコードをダウンロードしてください。

$ git clone git@github.com:TwilioDevEd/verify-v2-quickstart-php.git

2. composer install

$ composer install

3. .env.sampleをコピーして、.envを作成します

$ cp .env.example .env

4. アプリケーションキーを作成します。

$ php artisan key:generate

5. .envに事前準備で取得した値を入力します。

TWILIO_ACCOUNT_SID=ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
TWILIO_AUTH_TOKEN=7axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TWILIO_VERIFICATION_SID=VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

6. databaseファイルを作成しマイグレーションを行います。

$ touch database/twilio_verify_quickstart.sqlite
$ php artisan migrate

7. アプリケーションを起動します。

php artisan serve

8. http://localhost:8000上で動作を確認します。

動作確認

それでは、http://localhost:8000にアクセスして動作確認してみます。
「Register」をクリックして、新規ユーザー作成を行います。

verifyでの動作確認方法

続いてUsernamePasswordPhone numberを入力します。Phone numberは国を選択し電話番号を入力してください。

verifyでの動作確認方法2

SMSが届いたら、認証コードを入力して、「Verify」をクリックします。

verifyでの動作確認方法3

認証ができてログインできるのが確認できます。

verifyでの動作確認方法4

まとめ

Twilio Verifyを利用すれば、素早く自分のプロダクトに二要素認証を組み込むことが可能です。二要素認証はTwilioを利用し、プロダクトをより早くリリースしてみてはいかがでしょうか。

アプリケーションエンジニア 葛 智紀
アプリケーションエンジニア 葛 智紀

前職でiOS、Androidのネイティブアプリケーション開発、AngularやLaravelを用いたウェブアプリケーション開発に従事。KDDIウェブコミュニケーションズではTwilioの最新情報の発信やTwilioを用いた地域課題解決を担当。 個人では、Google Developer Group Tokyoのオーガナイザーを務める。

CTA_まずはtwilioを使ってみる。

Share!!

  • お役立ち情報
  • イベント情報
  • 相談会申込
  • 導入事例