Signature Key en Webhooks

Signature Key
Una signature key es una clave de firma utilizada para verificar la autenticidad y la integridad de los datos recibidos a través del webhook. La firma se genera mediante un algoritmo de hashing, y la clave de firma es esencial para garantizar que la solicitud del webhook provenga realmente de la fuente esperada y que los datos no hayan sido manipulados durante la transmisión.

¿Dónde puedo obtener la signature key?

Dentro del dashboard de Syncfy, en el módulo de Webhooks podrás visualizar los webhooks creados, al seleccionar el detalle del webhook podrás visualizar la Signature Key:


Ejemplo del uso de la Signature Key, haciendo uso de Java Script con express

// server.js
const express = require('express');
const jwt = require('jsonwebtoken');
const bodyParser = require('body-parser');

const app = express();
const port = 5001;
const secret = "***********************"

app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded

// Set up route
app.post('/my_webhook', (req, res) => {
  let headers = req.headers;
  let body = req.body;
  let signature = headers['request-signature'];
  try {
    let decoded = jwt.verify(signature, Buffer.from(secret, 'base64'));
    console.log("Decoded:", true);
    res.send({'status': 'ok', 'code': 200, 'is_signed': '1'});
  } catch(err) {
    let status_code = 202
    console.log('Error name:', err.name, 'Error message:', err.message);
    res.status(status_code).send({
      'status': 'unsigned',
      'code': status_code,
      'is_signed': 0
    });
  }
});

app.listen(port, () => {
  console.log(`Success! Your application is running on port ${port}.`);
});