Я установил Typeform webhook , и он работает хорошо.
Теперь я пытаюсь защитить его, но я застрял в Проверке полезной нагрузки из секции Typeform .
Я адаптировал описанные шаги и пример Ruby (и пример PHP , который мне отправил справочный центр Typeform) в узел (Метеор):
const crypto = require('crypto');
function post() {
const payload = this.bodyParams;
const stringifiedPayload = JSON.stringify(payload);
const secret = 'the-random-string';
const receivedSignature = lodash.get(request, 'headers.typeform-signature', '');
const hash = crypto
.createHmac('sha256', secret)
.update(stringifiedPayload, 'binary')
.digest('base64');
const actualSignature = `sha256=${hash}`;
console.log('actualSignature:', actualSignature);
console.log('receivedSignature:', receivedSignature);
if (actualSignature !== receivedSignature) {
return { statusCode: 200 };
}
// .. continue ..
});
Но actualSignature
и receivedSignature
никогда не совпадают, я получаю результаты типа:
actualSignature: sha256=4xe1AF0apjIgJNf1jSBG+OFwLYZsKoyFBOzRCesXM0g=
receivedSignature: sha256=b+ZdBUL5KcMAjITxkpzIFibOL1eEtvN84JhF2+schPo=
Почему это может быть?