保护Twitter Webhook

时间:2018-11-14 07:46:53

标签: node.js twitter webhooks koa

Twitter Docs中所述 验证请求的步骤

  1. 使用消费者机密和传入的有效负载主体创建哈希。
  2. 将创建的哈希与base64编码的x-twitter-webhooks-signature值进行比较。

这是我这样做的代码:

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

twitter的x-twitter-webhooks-signature标头和生成的哈希不匹配。另外,https://twittercommunity.com/t/validating-the-webhook-signature-header-in-node-js/102525上的帖子说这是JSON.stringify()的问题。我正在使用koa和koa-body,如何解决哈希不匹配的问题?

1 个答案:

答案 0 :(得分:1)

找到了解决方案。用koa-bodyparser代替koa-body,然后sha256中的ctx.request.rawBody与标题匹配。