#youtube-api #hmacsha1 #websub
#youtube-api #hmacsha1 #websub
Вопрос:
Я работаю над подпиской на Push-уведомления YouTube.
Я могу подписаться на него и получил push-уведомления с YouTube. Я использовал HMAC secret для этой подписки. Мне нужно подтвердить, что данные, которые я получаю, отправляются с сервера YouTube. Я не могу найти ни одного документа, чтобы узнать о том, как PubSubHubbub создает подпись.
Я попробовал следующие шаги:
- нормализовал ли тело запроса (которое представляет собой содержимое XML),
- я создал дайджест SHA1 в шестнадцатеричной форме.
Но эта подпись не совпадает с подписью, отправленной с PubSubHubbub.
Не мог бы кто-нибудь, пожалуйста, объяснить шаги по вычислению подписи для этой цели?
Заранее спасибо.
Ответ №1:
Согласно официальным документам ядра PubSubHubbub (версия 0.4, последняя), вы должны точно следовать описанному там алгоритму:
8. Аутентифицированное распространение контента
Если подписчик указал значение для
hub.secret
в своем запросе на подписку, концентратор ДОЛЖЕН сгенерировать подпись HMAC полезной нагрузки и включить эту подпись в заголовки запроса запроса на распространение контента. ЗначениеX-Hub-Signature
заголовка ДОЛЖНО быть в формеsha1=signature
, гдеsignature
это 40-байтовое шестнадцатеричное представление подписи SHA1 [RFC3174]. Подпись ДОЛЖНА быть вычислена с использованием алгоритма HMAC [RFC2104] с телом запроса в качестве данных и вhub.secret
качестве ключа.Когда подписчики получают запрос на распространение контента с указанным
X-Hub-Signature
заголовком, они ДОЛЖНЫ пересчитать подпись SHA1 с общим секретом, используя тот же метод, что и концентратор. Если подпись не совпадает, подписчики все равно ДОЛЖНЫ вернуть 2xx успешного ответа для подтверждения получения, но локально игнорируют сообщение как недействительное. Использование этого метода вместе с HTTPS [RFC2818] для запросов на подписку позволяет простым подписчикам получать аутентифицированные уведомления от хабов без необходимости для подписчиков запускать сервер HTTPS [RFC2818].Однако обратите внимание, что эта подпись гарантирует только то, что полезная нагрузка не была подделана. Поскольку уведомление также включает заголовки, подписчик не должен считать их безопасными, если, конечно, подписчик не использует обратные вызовы HTTPS [RFC2818].
Если вы укажете среду программирования, которую вы используете, я могу помочь вам в дальнейшем.
Комментарии:
1. спасибо за ответ..
same method as the hub
Я хотел знать, как концентратор вычисляет подпись. Сейчас я использую java.2. Вот несколько общедоступных кодов , вычисляющих подписи в соответствии с алгоритмом HMAC RFC2104.