Author Image

rogerio_itu2044

Jan 17, 2025

Configuração de Webhook com Skip-mTLS

webhookskip-mtlssegurançaHMACIPEfí

Tenho mais 2 duvidas sobre o webhook Skip-mTLS, ao cadastrar https://seu_dominio.com.br/webhook?hmac=xyz&ignorar= ele se tornará dinâmico.

- Eu devo incluir o /api no final da url acima, ficando https://seu_dominio.com.br/webhook?hmac=xyz&ignorar=/api?

- Eu devo criar outro endpoint do tipo POST para https://seu_dominio.com.br/webhook?hmac=xyz&ignorar=/api (caso tenha o /api no final conforme questionado acima ou somente com o endpoint acima eu já conseguirei escutar as notificações?

Por favor me encaminhe exemplos.
Muito obrigado!

Respostas (3):
Avatar discord do usuario guilherme_efi

guilherme_efi

17/01/2025

Bom dia, @rogerio_itu2044! Tudo bem?
Gostaria de registrar que, ao deixar o x-skip-mtls-checking como true, o Efí continuará enviando o certificado TLS na requisição, mas seu servidor irá ignorá-lo.

Nesse caso, você não precisa criar uma nova rota, pois a notificação será sempre enviada para /webhook, e o hmac será um query param. O parâmetro ignorar pode realmente ser desconsiderado. Nesse cenrário é importante verificar se o HMAC recebido na notificação em sua aplicação, é o mesmo que foi cadastrado no webhook no Efí. Além disso, recomendamos realizar uma validação por IP, já que nossa API utiliza exclusivamente o IP 34.193.116.226. Essas práticas garantem que é realmente o Efí quem está enviando a notificação. Sem o mTLS configurado, não ocorre o "handshake" de segurança.

Segue um exemplo em Node.js:

js
app.post('/webhook', (req, res) => {
const expectedHmac = "xyz"; // Valor esperado do HMAC que você usar no cadastro do webhook (cadastre um diferente deste)
const authorizedIp = "34.193.116.226"; // IP utilizado pelo API do Efí Bank

const requestIp = req.ip;
const requestHmac = req.query.hmac;

// Validação do IP
if (requestIp !== authorizedIp) {
res.status(401).json({ error: "Solicitação de webhook não autorizado" });
return;
}

// Validação do HMAC
if (!requestHmac || requestHmac !== expectedHmac) {
res.status(401).json({ error: "Solicitação de webhook não autorizado" });
return;
}

// Processar o webhook conforme sua regra de negócio
});

Avatar discord do usuario rafaelleao_medicalsys_31007

rafaelleao_medicalsys_31007

20/02/2025

isso aqui, do ip restriction em

34.193.116.226
ajuda bastante a proteger,

mas devia ta mais explicito da pessoa sempre colocar, pra nao ficar vulneravel

aproveita que existe a chamada de configuracao, e coloca a resposta do evento teste_webhook, pra colocar o ip, e na documentacao tbm

Avatar discord do usuario rubenskuhl

rubenskuhl

20/02/2025

Mas o que nos parece mais efetivo é olhar o CN de quem está fazendo conexão, que é gn-webhook-pix.