Hash 验证Smartsheet Webhook API

Hash 验证Smartsheet Webhook API,hash,cryptography,webhooks,smartsheet-api,smartsheet-api-2.0,Hash,Cryptography,Webhooks,Smartsheet Api,Smartsheet Api 2.0,每当Smartsheet向我的回调URL发出POST请求时,我都会尝试验证Smartsheet的Webhook API。以前有人用过这个吗 每当调用我的回调URL时,我需要验证POST请求是否来自Smartsheet 遵循指南: 我正在使用Javascript。我能够生成一个散列。我尝试了几种方法,但没有一种有效。根据最佳实践和我以前的工作经验,这应该是可行的: crypto.createHash('sha256', sharedSecret).update(JSON.stringify(bod

每当Smartsheet向我的回调URL发出POST请求时,我都会尝试验证Smartsheet的Webhook API。以前有人用过这个吗

每当调用我的回调URL时,我需要验证POST请求是否来自Smartsheet

遵循指南:

我正在使用Javascript。我能够生成一个散列。我尝试了几种方法,但没有一种有效。根据最佳实践和我以前的工作经验,这应该是可行的:

crypto.createHash('sha256', sharedSecret).update(JSON.stringify(body)).digest('hex');
但事实并非如此,我甚至试过:

crypto.createHash('sha256').update(sharedSecret+JSON.stringify(body)).digest('hex');
它不起作用了

这里的body变量来自req.body,来自Smartsheet发送到我的回调URL的有效负载,sharedSecret是我创建webhook时Smartsheet提供的秘密。

我终于找到了答案。 我使用了错误的函数。正确的方法是:

crypto.createHmac('sha256',sharedSecret).update(JSON.stringify(body)).digest('hex');
根据规范,“十六进制”与基数16相同

sharedSecret将是键,请求主体需要转换为字符串才能工作。 运行此代码将生成与“smartsheet-hmac-sha256”中完全相同的字符串,因此我们可以进行比较和验证

crypto.createHmac('sha256',sharedSecret).update(JSON.stringify(body)).digest('hex');