Проверить Smartsheet Webhook API - PullRequest
       36

Проверить Smartsheet Webhook API

0 голосов
/ 28 февраля 2020

Я пытаюсь проверить Webhook API Smartsheet всякий раз, когда smartsheet отправляет запрос POST на мой URL обратного вызова. Кто-нибудь работал с этим раньше?

Мне нужно проверять, поступает ли запрос POST от Smartsheet, всякий раз, когда выполняется вызов на мой URL обратного вызова.

Следуя инструкции здесь :

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. Я смог сгенерировать га sh. Я попробовал несколько подходов, ни один из них не работал. Основываясь на лучших практиках и на том, с чем я работал раньше, это должно работать:

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 - это секрет, предоставляемый Smartsheet при создании webhook.

1 Ответ

0 голосов
/ 28 февраля 2020

Я наконец понял это. Я использовал неправильную функцию. Правильный способ сделать это будет:

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

'hex' - это то же самое, что и base 16, в соответствии со спецификацией c.

Ключом является sharedSecret, и тело запроса должно быть преобразовано в строку, чтобы он работал. Запуск этого кода приводит к той же самой строке, что и у нас: 'smartsheet-hma c -sha256', поэтому мы можем сравнить и проверить.

...