Защита Twitter Webhook

Как упоминалось в Twitter Документы Шаги по проверке запроса

  1. Создайте хеш, используя свой секрет потребителя и тело входящей полезной нагрузки.
  2. Сравните созданный хэш со значением x-twitter-webhooks-signature в кодировке base64.

Вот мой код для этого:

const buffer = Buffer.from(JSON.stringify(ctx.request.body))
const expectedHash = crypto.createHmac('sha256', TWITTER_CONSUMER_SECRET).update(buffer).digest('base64')

Заголовок x-twitter-webhooks-signature из твиттера и сгенерированный хэш не совпадают. Кроме того, сообщение на странице https://twittercommunity.com/t/validating-the-webhook-signature-header-in-node-js/102525 говорит, что это JSON.stringify() проблема. Я использую koa и koa-body, как исправить несоответствие хешей?


person Niket Malik    schedule 14.11.2018    source источник


Ответы (1)


Нашел решение. Используется koa-bodyparser вместо koa-body, тогда sha256 из ctx.request.rawBody совпадает с заголовком.

person Niket Malik    schedule 15.11.2018