我正在使用GitHub的Webhook将事件引导到我的应用程序(GitHub Hubot的实例),并且它受到sha1密码的保护。
我是使用以下代码验证传入Webhook的哈希值:
我是使用以下代码验证传入Webhook的哈希值:
crypto = require('crypto')
signature = "sha1=" + crypto.createHmac('sha1', process.env.HUBOT_GITHUB_SECRET).update( new Buffer request.body ).digest('hex')
unless request.headers['x-hub-signature'] is signature
response.send "Signature not valid"
return
发送到 Webhook 的 X-Hub-Signature 标头如下所示:
X-Hub-Signature: sha1=1cffc5d4c77a3f696ecd9c19dbc2575d22ffebd4
按照 GitHub 的文档,我正确地传递了密钥和数据,但哈希值总是不同。
这是 GitHub 的文档。 https://developer.github.com/v3/repos/hooks/#example
我可能误解了以下部分:
secret: 一个可选字符串,作为 X-Hub-Signature 标头与 HTTP 请求一起传递。该标头的值被计算为 body 的 HMAC 十六进制摘要,使用密钥作为密钥。
有人能看出我的问题在哪里吗?
application/json
。您可以在 Webhook 配置页面上找到这些设置。https://github.com/MY_ORG/MY_REPO/settings/hooks/HOOK_ID#delivery-response - Michael Johansen