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!
}