Twilioで開発を始める前に知っておくこと(クレデンシャル編)


はじめに

みなさん、こんにちは。
Twilioエバンジェリストの高橋です。

今回は、これからTwilioを使う方(使い始めている方にも)に知っておいてほしい、APIクレデンシャルについて説明します。

APIクレデンシャルとは

TwilioはAPIのサービスなので、皆さんからのRest APIコールを受けて色々なことができます。電話をかけたりSMSを送ったりするだけでなく、たとえば電話番号を購入したり、保有している電話番号の一覧を取得したり、ログを確認したりすることが可能です。
RestAPIでできることは、こちらのドキュメントにまとまっています。

当然ですが、RestAPIを利用するためには認証が必要です。TwilioではAPIの認証にBASIC認証を利用しています。

curl -G https://api.twilio.com/2010-04-01/Accounts \
    -u '[YOUR ACCOUNT SID]:[YOUR AUTH TOKEN]'

上の例は、保有しているアカウントのリストを取得するためのRest APIです。たとえば、作成したサブアカウントの一覧などもこのAPIを使うと取得が可能です。サブアカウントについては、こちらの記事を御覧ください。

このCurlの-uオプションがBASIC認証となり、Twilioでは、AccountSidがユーザーID、AuthTokenがパスワードとして利用されます。このあたりは皆さんよくご存知ですよね。

テストクレデンシャル

実際の開発現場では、開発中にRest APIをテストしたいことがあります。そこで、テストするたびに料金が発生してしまうことを防ぐために用意されているのが、テストクレデンシャルです。
テストクレデンシャルは、以下の場所から確認が可能です。

  • 管理コンソールを開きます。
  • Dashboardの設定メニューの中の一般を開きます。

ここに書かれているACから始まる文字列がAccountSidの代わりに使えます。また、その下の目のアイコンを押すとテストクレデンシャルのAuthTokenも表示されます。

テストクレデンシャルにおける制限事項

テストクレデンシャルでは、本来のAccountSidなどを利用したときと比較して、以下の制限事項があります。

  • 実際に電話がかかったり、SMSが送られることはありません。
  • 電話番号の購入もされません。
  • テストが可能なAPIは以下の3つのみです。
    • 電話番号の購入
    • 電話の発信
    • SMSの送信
  • fromパラメータを指定する場合、実際に購入した番号は利用できません。

上記以外のAPIコールをテストクレデンシャルで実行すると、403 Forbiddenのエラーが返ります。

マジックインプット

RestAPIのテストでは、あえてエラーを発生させることでエラーのハンドリングのテストをしたいときがあります。そのときに使うことができる特別な番号をマジックインプットと呼びます。
Twilioにはテストクレデンシャルを使ったテストで利用が可能なマジックインプットとして以下の番号を用意しています。

概要 エラー コード
+15005550000 利用できない電話番号です。 21422
+15005550001 無効な電話番号です。 21421
+15005550006 利用できる有効な電話番号です。 エラーはありません。

APIクレデンシャルの扱いについて

すでに説明したように、Twilioにおけるクレデンシャル情報はとても大切なものです。とくにAuthTokenについては、絶対に他の人には知られてはいけません。万が一知られてしまうと、最悪の場合ご自分の購入したポイントを使い果たすまで電話をかけられたり、SMSを送られてしまうことになります。
ハッカソンイベントなどでチーム開発をしているときに、GitHubなどにクレデンシャル情報が書かれた状態のコードをアップしてしまう事象に遭遇することがあります。ハッカソンではなくても、割とTwilio開発の初心者にはよく見られます(何を隠そう、僕も昔GitHubで公開しちゃったことがあります)。
USのTwilioチームは定期的にこのような事象を確認してはメールで通知をしてくれますが、まずは自分でしっかりと管理することが大切です。
APIクレデンシャルのうちAccountSidは変更できませんが、AuthTokenは変更することができます。万が一、AuthTokenが漏洩してしまった場合は、速やかに変更するようにしてください。

APIキーについて

ところで皆さん、APIキーってご存知でしょうか?
APIキーは、APIクレデンシャルの代わりに利用できるクレデンシャルです。すなわち、RestAPIの発行時に認証情報として利用ができます。
APIキーはいくつでも生成することができますし、一部の機能を制限したキーを生成することも可能なので、システムごとにAPIキーをうまく使い分けて利用するとよいでしょう。ただし、あまりAPIキーを発行しすぎると管理が面倒になるだけでなく、どれかのキーペアが漏洩した時点で不正アクセスされてしまうリスクが増大しますので注意してください。

APIキーの発行手順

APIキーは以下の方法で生成、削除が可能です。

  • 管理コンソールを開きます。
  • 電話番号(Phone Numbers)メニューを開き、ツールメニューを選択します。
  • さらにAPIキーを選択すると、現在作成したAPIキーの一覧が表示されます。
  • 赤いプラスアイコンを押すと、新しいAPIキーを作成する画面が表示されます。

  • APIキーにはわかりやすい名前をつけておきます。
  • 種別は「Standard」と「Master」のいずれかが選択できます(Standardを選択した場合は、アカウント管理などの操作ができません)。
  • APIキーを生成するボタンを押すと、作成したキーの確認画面が表示されます。
  • ここに表示されるSIDがAccountSid、SECRETがAuthTokenの代わりに使えます。SECRETについては、以後確認することができませんので、必ず安全な場所に保管してください。
  • 最後に完了しましたにチェックを入れて、終了ボタンを押せばAPIの作成は完了です。

環境変数を使おう

GitHubに誤ってアップしてしまう事故を防いだり、Qiitaなどにクレデンシャル情報を公開しないためにも、コーディングの際には極力環境変数を利用して、クレデンシャル情報をハードコーディングしないようにしましょう。
環境変数については、それぞれの言語ごとに指定方法が違いますし、便利なライブラリなどがあったりしますので、そちらを調べてください。

まとめ

  • クレデンシャル情報はRestAPIの認証キーです。
  • AuthTokenは更新することができます。
  • テストクレデンシャルを利用すると、一部のAPIのテストができます。
  • APIキーをうまく利用しましょう。
  • クレデンシャル情報をハードコーディングしないように十分気をつけましょう。

Twilio(トゥイリオ)とは

https://twilio.kddi-web.com
Twilioは音声通話、メッセージング(SMS/チャット)、ビデオなどの 様々なコミュニケーション手段をアプリケーションやビジネスへ容易に組み込むことのできるクラウドAPIサービスです。初期費用不要な従量課金制で、各種開発言語に対応しているため、多くのハッカソンイベントやスタートアップなどにも、ご利用いただいております。