【问题标题】:"Signature is Invalid" message for AppCenter Webhook requestAppCenter Webhook 请求的“签名无效”消息
【发布时间】:2019-02-28 09:09:40
【问题描述】:

我正在尝试在 GitHub API 和 AppCenter API 之间编写代理服务,当我尝试重新路由标准 GitHub API 消息时,我收到“签名无效”响应。 这是我要发送的内容:

{
"ref": "refs/heads/xxxx",
"before": "xxxxxxxxxxxxx",
"after": "xxxxxxxxxxxxx",
"created": false,
"deleted": false,
"forced": false,
"base_ref": null,
"compare": "https://github.com/xxxxx",
"commits": [{
    "content": "xxxx"
}],
"head_commit": {
    "content": "xxxx"
},
"repository": {
    "content": "xxxx"
},
"pusher": {
    "content": "xxxx"
},
"organization": {
    "content": "xxxx"
},
"sender": {
    "content": "xxxx"
}

}

AppCenter 的端点是:

https://api.appcenter.ms/v0.1/public/apps/xxxxxxxxxxx/hooks

请求的标头是:

{
    "content-type": "application/json",
    "User-Agent": "GitHub-Hookshot/xxxxxxxx",
    "X-GitHub-Delivery": "xxxxxxxxxxxxxx",
    "X-GitHub-Event": "push",
    "X-Hub-Signature": "sha1=xxxxxxxxxxx"
}

这是我得到的回复:

{
    "id": "xxxxxxxxxxxxxxxx",
    "message": "Signature is invalid"
}

我还没有从 AppCenter 收到一个明智的回答,希望有人已经有类似的经历并且可以回答。 谢谢

【问题讨论】:

    标签: github-api visual-studio-app-center


    【解决方案1】:

    我认为问题在于X-Hub-Signature 的值。从Validating payloads from Github 开始,Github 在有效负载数据和您放入存储库的 webhook 部分的秘密字符串之间使用 HMAC SHA1:

    签名格式(不带括号):

    sha1={HMAC-SHA1(secret, payload)}
    

    计算签名的几个例子:

    • 使用 ruby​​(来自 here):

      signature = 'sha1=' + OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha1'), ENV['SECRET_TOKEN'], payload_body)
      
    • 使用javascript(来自here):

      var signature = 'sha1=' + CryptoJS.HmacSHA1(payload, environment.secret).toString(CryptoJS.enc.Hex)
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-08
      • 1970-01-01
      • 1970-01-01
      • 2015-11-01
      • 2017-03-29
      • 2020-07-29
      • 1970-01-01
      相关资源
      最近更新 更多