Upgrade to Pro — share decks privately, control downloads, hide ads and more …

はじめてのTwilioシリーズ - 二要素認証を組み込もう / Twilio Verify HandsOn

Neri78
November 26, 2020

はじめてのTwilioシリーズ - 二要素認証を組み込もう / Twilio Verify HandsOn

Twilio Verifyを用いて二要素認証をアプリに組み込むハンズオンで使用した資料です。

ハンズオン資料
https://neri78.github.io/Twilio-HandsOn-AccSec-JP/

レコーディングはこちらです。
https://youtu.be/KiHm05xRwbo

Neri78

November 26, 2020
Tweet

More Decks by Neri78

Other Decks in Programming

Transcript

  1. © 2020 TWILIO INC. ALL RIGHTS RESERVED. © 2020 TWILIO

    INC. ALL RIGHTS RESERVED. 自己紹介
 池原 大然
 Developer Evangelist @ Twilio Email: [email protected] Twitter/Twitch/GitHub: “Neri78” 
 Twitch Twitter GitHub
  2. © 2020 TWILIO INC. ALL RIGHTS RESERVED. RUNTIME Functions Assets

    CLI Debugger SDKs Phone Numbers Short Codes IoT SIM SIP Interconnect SUPER NETWORK Twilio Flex Marketing Campaigns ソリューション チャネル API SMS Voice Chat Email WhatsApp Video Facebook Autopilot インテリジェンス Verify Lookup Authy アイデンティティ TaskRouter オーケストレーション Studio Conversations
  3. © 2020 TWILIO INC. ALL RIGHTS RESERVED. 多要素認証とは?
 wikipediaより:
 出典:

    https://ja.wikipedia.org/wiki/%E5%A4%9A%E8%A6%81%E7%B4%A0%E8%AA%8D%E8%A8%BC
  4. © 2020 TWILIO INC. ALL RIGHTS RESERVED. © 2020 TWILIO

    INC. ALL RIGHTS RESERVED. Email 電話番号
 いろいろなソースから 
 利用できる
 電話番号の偽装は(現在)難しい 

  5. © 2020 TWILIO INC. ALL RIGHTS RESERVED. © 2020 TWILIO

    INC. ALL RIGHTS RESERVED. 電話番号をIDに利用
 多くのサービスで利用されている 

  6. © 2020 TWILIO INC. ALL RIGHTS RESERVED. © 2020 TWILIO

    INC. ALL RIGHTS RESERVED. Twilio アカウントセキュリティプロ ダクト

  7. © 2020 TWILIO INC. ALL RIGHTS RESERVED. © 2020 TWILIO

    INC. ALL RIGHTS RESERVED. 3つのシナリオ
 登録
 認証
 回復

  8. © 2020 TWILIO INC. ALL RIGHTS RESERVED. それぞれの課題
 登録
 認証


    回復
 ユーザー偽装
 乗っ取り
 サポートコスト

  9. © 2020 TWILIO INC. ALL RIGHTS RESERVED. © 2020 TWILIO

    INC. ALL RIGHTS RESERVED. Twilio APIを利用し解決
 課題
 Twilio API
 
 Verify 偽装
 乗っ取り
 サポート
 コスト

  10. © 2020 TWILIO INC. ALL RIGHTS RESERVED. © 2020 TWILIO

    INC. ALL RIGHTS RESERVED. 二要素認証をアプリに組み込み 
 Verify
  11. © 2020 TWILIO INC. ALL RIGHTS RESERVED. © 2020 TWILIO

    INC. ALL RIGHTS RESERVED. 本人(かもしれない)確認
 電話番号などを用いた認証で不正な新規アカウント作成を防止
 Verify User Verified 確認コードを SMS、電話、 Emailで送信
 コードを入力

  12. © 2020 TWILIO INC. ALL RIGHTS RESERVED. 世界対応の
 認証
 


    200以上の国や地域に 対応し、ロケールに
 よる認証メッセージの ローカライズ
 確認コード送信用の 電話番号管理が不要
 
 Twilio側で確認コードの
 送信を管理、運用
 電話番号の取得は不要
 豊富なチャネル
 
 
 SMS、電話、Emailで確 認コードの
 送信が可能
 主な機能
 1 2 3
  13. © 2020 TWILIO INC. ALL RIGHTS RESERVED. © 2020 TWILIO

    INC. ALL RIGHTS RESERVED. Verify demo
  14. © 2020 TWILIO INC. ALL RIGHTS RESERVED. © 2020 TWILIO

    INC. ALL RIGHTS RESERVED. 確認コードの送信先(電話番号、 Emailアドレス)、
 送信方法(SMS、電話、Email)を設定
 コードの送信 // AccountSidとAuthTokenでクライアントを初期化 const client = require('twilio')( process.env.TWILIO_ACCOUNT_SID, process.env.TWILIO_AUTH_TOKEN); let verify_service_sid = 'VAxxxxxxxxxxxxxxxxx'; let verify_to = '+8190xxxxxxxx'; // 事前にID/PWなどの認証を行う // コードを送信 client.verify.services(verify_service_sid) .verifications .create({ to: verify_to, channel: 'sms'}) //sms, call, email .then(verification => console.log(verification)); { sid: 'VExxxxxxxxxxxxxxx', serviceSid: 'VAxxxxxxxxxxxxxxx', accountSid: 'ACxxxxxxxxxxxx', to: '+8190xxxxxxxx', channel: 'sms', status: 'pending', valid: false, lookup: { carrier: { mobile_country_code: '440', type: 'mobile', error_code: null, mobile_network_code: '50', name: 'KDDI' } }, amount: null, payee: null, sendCodeAttempts: [ { channel: 'sms', time: '2020-04-20T22:03:09.112Z' } ], dateCreated: 2020-04-20T22:03:09.000Z, dateUpdated: 2020-04-20T22:03:09.000Z, url: … }
  15. © 2020 TWILIO INC. ALL RIGHTS RESERVED. © 2020 TWILIO

    INC. ALL RIGHTS RESERVED. コードを送信先(電話番号、 Emailアドレス)、
 またはVerificationSidをもとに検証
 検証のステータスを(検証中/失敗、許可、拒否)で取得 
 コードの検証
 // AccountSidとAuthTokenでクライアントを初期化 const client = require('twilio')( process.env.TWILIO_ACCOUNT_SID, process.env.TWILIO_AUTH_TOKEN); let verify_service_sid = 'VAxxxxxxxxxxxxxxxxx'; let verify_to = '+8190xxxxxxxx'; // コードを送信先(to)で確認 client.verify.services(verify_service_sid) .verificationChecks .create({ to: verify_to, code: '081170'}) .then (verification_check => console.log(verification_check)); { sid: 'VExxxxxxxxx', serviceSid: 'VAxxxxxxxx', accountSid: 'ACxxxxx', to: '+8190xxxxxxxx', channel: 'sms', status: 'approved', valid: true, amount: null, payee: null, dateCreated: 2020-04-20T22:29:20.000Z, dateUpdated: 2020-04-20T22:30:00.000Z }
  16. © 2020 TWILIO INC. ALL RIGHTS RESERVED. © 2020 TWILIO

    INC. ALL RIGHTS RESERVED. Emailで検証コードを送信する場合は、あらかじめ 
 SendGridと統合したサービスを作成しておく 
 https://www.twilio.com/docs/verify/email SendGridと連携

  17. © 2020 TWILIO INC. ALL RIGHTS RESERVED. © 2020 TWILIO

    INC. ALL RIGHTS RESERVED. Verify demo
  18. © 2020 TWILIO, INC. ALL RIGHTS RESERVED. まとめ 
 ➢

    多要素認証を手軽にアプリに追加
 ◦ SMS
 ◦ Voice
 ◦ Email
 ◦ Push
 
 
 リソース:
 Verify https://jp.twilio.com/docs/verify/api 

  19. © 2020 TWILIO INC. ALL RIGHTS RESERVED. © 2020 TWILIO

    INC. ALL RIGHTS RESERVED. ハンズオンのすすめかた

  20. © 2020 TWILIO INC. ALL RIGHTS RESERVED. © 2020 TWILIO

    INC. ALL RIGHTS RESERVED. 本日のハンズオンについて
 • ハンズオンコンテンツ
 https://neri78.github.io/Twilio-HandsOn-AccSec-JP/ • 不明点についてはそれぞれのプラットフォームで提供されている
 チャットでご質問ください
 
 • 適宜休憩をおとりください
 

  21. © 2020 TWILIO INC. ALL RIGHTS RESERVED. © 2020 TWILIO

    INC. ALL RIGHTS RESERVED. まとめ

  22. © 2020 TWILIO INC. ALL RIGHTS RESERVED. © 2020 TWILIO

    INC. ALL RIGHTS RESERVED. リソース
 • リソース
 ◦ ドキュメント
 https://jp.twilio.com/docs/verify/api ◦ ハンズオンコンテンツ https://neri78.github.io/Twilio-HandsOn-AccSec-JP/
  23. © 2020 TWILIO INC. ALL RIGHTS RESERVED. © 2020 TWILIO

    INC. ALL RIGHTS RESERVED. Lookup Verify Authy おつかれさまでした!