Validando

Validando Webhooks

Para validar se os Webhooks estão sendo realmente enviados pelo Byma é necessário um procedimento de validação da assinatura enviada por nós.

ℹ️

Este é um processo opcional. Como medida de segurança, recomendamos fortemente a validação de todos os Webhooks recebidos.

Fornecemos a você uma chave pública para validação. Consulte no painel de controle do produtor ou entre em contato conosco para mais informações sobre onde encontrá-la. A chave pública é codificada em base64.

Todo Webhook enviado pelo Byma é acompanhado de um cabeçalho de assinatura x-byma-signature.

Com a chave pública e essa assinatura, pode-se validar criptograficamente a origem do Webhook. A assinatura é uma string em base64 contendo o corpo da request assinado com uma chave privada, secreta e única para cada Webhook. O algoritmo utilizado é o RSA-SHA256

Abaixo, um exemplo de implementação do algoritmo de verificação em Node.js:

import crypto from 'crypto';
 
const PUBLIC_KEY = 'SuaChavePublica'
 
const signature = req.headers['x-byma-signature'];
const publicKey = Buffer.from(PUBLIC_KEY, 'base64').toString('utf8')
 
const verifier = crypto.createVerify('RSA-SHA256');
verifier.update(JSON.stringify(req.body));
const verified = verifier.verify(atob(publicKey), signature, 'base64');
 
if (verified) {
    // Faça algo
} else {
    // Webhook de origem inválida!
}