2017-01-05 6 views
0

私たちのソリューションのためにTwilio Webhooksを評価しています。それは魅力を発揮します。 私はそれを本物のTWILIO呼び出しであり、BOT/FAKEではなく、EndPoint(IPNリスナー、Twilio WebHookリスナー用に指定したURL)にコールしていることを検出して検証したいと思います。Twilio Webhooks、真のtwilioリクエストを確認する

私はUserAgentの値に "TwilioProxy"が含まれているかどうかチェックしたくありません。より良いアプローチをお勧めしますか?

+0

WebHookが公開されているURLで、ハッシュされた秘密鍵を追加して値を検証できますか?例えば。 http:// your-api/webhooks/twilio?hash = abc123 – G0dsquad

答えて

0

ここではTwilioの開発者のエバンジェリストです。

あなたは絶対にvalidate that a webhook is a genuine Twilio requestです。

ウェブフック要求ごとに、Twilioは、X-Twilio-Signatureヘッダーに署名を付けて送信します。署名は、以下の方法を使用して作成されます。

  1. Twilioは、最終的なURLと任意のPOSTフィールド(リクエストがPOSTである場合)を含め、アプリケーションにその要求を組み立てます。
  2. リクエストがPOSTの場合、TwilioはすべてのPOSTフィールドを取り、その名前でアルファベット順にソートし、パラメータ名と値をURLの最後(区切り文字なし)に連結します。
  3. Twilioは結果の文字列(クエリ文字列とPOSTパラメータを含む完全なURL)を取得し、HMAC-SHA1とAuthTokenをキーとして署名します。

署名を検証するために、以下を行う必要があります。

  1. あなたはプロトコル(HTTPSから、あなたの電話番号やアプリに指定する要求URLの完全なURLを取ります... )をクエリ文字列(?の後ろのすべて)の末尾に移動します。
  2. リクエストがPOSTの場合、すべてのPOSTパラメータをアルファベット順にソートします(Unixスタイルの大文字小文字を区別したソート順を使用)。
  3. POSTパラメータのソートされたリストを反復し、URLの末尾に変数名と値(区切り文字なし)を追加します。 文字列。
  4. AuthTokenをキーとしてHMAC-SHA1で結果の文字列に署名します(AuthTokenの場合は重要です)。
  5. 結果のハッシュ値をBase64でエンコードします。
  6. X-Twilio-Signatureヘッダーで送信されたハッシュと比較してください。彼らが合っていれば、あなたは良いことです。

これは、すべて私たちのSecurity pageに、例を挙げて、説明しています。 official helper librariesのいずれかを使用している場合、既に組み込まれていることを確認する方法があります。

+0

私は次のアプローチを使用しています: RequestValidatorバリデーター=新しいRequestValidator(); // Twilio.TwiMLのクラス var isAuth = validator.IsValidRequest(HttpContext.Current、_client.IpmAuthToken); isAuth == TRUEの場合、Authenticatedです。 –

+0

あなたのコメントのコードを読むのは難しいですが、あなたは質問に答えていると言いました。私が助けることができることが他にある場合は教えてください。 – philnash

関連する問題