验证Smartsheet Webhook API

问题描述 投票:0回答:1

每当智能表向我的回调URL发出POST请求时,我都会尝试验证智能表的Webhook API。以前有人使用过吗?

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

遵循指南here

To authenticate a callback request:

1. Calculate the HMAC of the webhook's sharedSecret and the request body.
This must be done using the SHA-256 cryptographic hash algorithm.

2. Format the calculated value as a string in base 16.

3. Compare your result with the value of the Smartsheet-Hmac-SHA256 header of the request.

我正在使用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提供的秘密。

hash cryptography webhooks smartsheet-api smartsheet-api-2.0
1个回答
0
投票

我终于明白了。我使用了错误的功能。正确的方法是:

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

'hex'根据规格与基数16相同。

sharedSecret将是密钥,并且请求的主体需要转换为字符串才能使其正常工作。运行此代码会产生与我们在'smartsheet-hmac-sha256'中完全相同的字符串,因此我们可以进行比较和验证。

© www.soinside.com 2019 - 2024. All rights reserved.