验证 Smartsheet Webhook API
Verify Smartsheet Webhook API
每当 smartsheet 向我的回调 URL 发出 POST 请求时,我都会尝试验证 Smartsheet 的 Webhook API。有人以前用过这个吗?
我需要验证 POST 请求是否来自 Smartsheet,无论何时调用我的回调 URL。
遵循指南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。我能够生成哈希。我尝试了几种方法,其中 none 有效。根据最佳实践和我之前的工作经验,这应该可行:
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的payload,sharedSecret是我创建webhook时Smartsheet提供的秘密。
我终于明白了。
我使用了错误的功能。正确的做法是:
crypto.createHmac('sha256',sharedSecret).update(JSON.stringify(body)).digest('hex');
根据规范,'hex' 与基数 16 相同。
sharedSecret 将是关键,请求的主体需要转换为字符串才能使其生效。
运行 此代码生成的字符串与我们在 'smartsheet-hmac-sha256' 中得到的字符串完全相同,因此我们可以进行比较和验证。
每当 smartsheet 向我的回调 URL 发出 POST 请求时,我都会尝试验证 Smartsheet 的 Webhook API。有人以前用过这个吗?
我需要验证 POST 请求是否来自 Smartsheet,无论何时调用我的回调 URL。
遵循指南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。我能够生成哈希。我尝试了几种方法,其中 none 有效。根据最佳实践和我之前的工作经验,这应该可行:
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的payload,sharedSecret是我创建webhook时Smartsheet提供的秘密。
我终于明白了。 我使用了错误的功能。正确的做法是:
crypto.createHmac('sha256',sharedSecret).update(JSON.stringify(body)).digest('hex');
根据规范,'hex' 与基数 16 相同。
sharedSecret 将是关键,请求的主体需要转换为字符串才能使其生效。 运行 此代码生成的字符串与我们在 'smartsheet-hmac-sha256' 中得到的字符串完全相同,因此我们可以进行比较和验证。