2017-01-05 5 views
0

Я оцениваю Twilio Webhooks для нашего решения. Он работает шармом. Я хотел бы обнаружить и подтвердить, что это подлинный вызов TWILIO, а не BOT/FAKE, который вызывает звонок в наш EndPoint (слушатель IPN, этот URL-адрес мы указываем для слушателя Twilio WebHook).Twilio Webhooks, подтверждающий подлинность twilio Request

Мне не нравится идея проверки значения UserAgent содержит «TwilioProxy». Вы рекомендуете лучший подход?

+0

В URL-адресе, который опубликован WebHook, вы можете добавить секретный ключ хеширования и подтвердить его значение? Например. 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 берет результирующую строку (полный URL-адрес с строкой запроса и всеми параметрами POST) и подписывает ее с использованием HMAC-SHA1 и вашего AuthToken в качестве ключа.

Для проверки подписи, необходимо:

  1. Возьмите полный адрес URL запроса вы укажете свой номер телефона или приложение, из протокола (HTTPS ...) через конец строки запроса (все после?).
  2. Если запрос является POST, отсортируйте все параметры POST в алфавитном порядке (используя порядок сортировки с учетом регистра в стиле Unix).
  3. Перейдите по отсортированному списку параметров POST и добавьте имя и значение переменной (без разделителей) в конец строки URL .
  4. Подпишите итоговую строку с помощью HMAC-SHA1, используя ваш AuthToken в качестве ключа (помните, что дело вашего AuthToken имеет значение!).
  5. Base64 кодирует полученное значение хэша.
  6. Сравните ваш хэш с нашим, представленный в заголовке X-Twilio-Signature. Если они совпадут, тогда вам хорошо идти.

Это все описано, с примерами, на нашем Security page. Если вы используете один из наших official helper libraries, тогда будет метод проверки этого уже встроенного.

+0

Я использую следующий подход: RequestValidator validator = new RequestValidator(); // Класс Twilio.TwiML var isAuth = validator.IsValidRequest (HttpContext.Current, _client.IpmAuthToken); if isAuth == TRUE ,, он аутентифицирован. –

+0

Трудно прочитать код в вашем комментарии, но вы сказали, что на вопрос ответили, поэтому я надеюсь, что это положительно! Дайте мне знать, если что-нибудь еще я могу сделать, чтобы помочь. – philnash

 Смежные вопросы

  • Нет связанных вопросов^_^