Histórico

EXIBINDO RESPOSTAS:

Avatar discord do usuario hlyras

hlyras

Ver no Discord

Boa tarde, tenho um SaaS hospedado na Digital Ocean através de um servidor compartilhado, eu vi que na documentação existe uma forma de receber o webhook da API PIX sem precisar do servidor dedicado:
"Por isso, disponibilizamos a opção skip mTLS, que permite o cadastro do webhook sem a necessidade de validação mTLS."
Seria muito mais prático para eu implementar dessa forma, tem algum código ou vídeo onde explica como fazer as verificações de segurança?

Avatar discord do usuario igor_efi

igor_efi

Ver no Discord

Boa tarde, @hlyras!

Sugerimos as duas formas de validação a seguir, mas recomendamos fortemente que as utilize em conjunto:

Verifique o IP de comunicação: Você pode restringir a comunicação ao domínio do webhhook cadastrado para aceitar apenas mensagens do IP utilizado pela Efí.
IP utilizado atualmente em nossas comunicações: '34.193.116.226'.

Adicione uma hash à URL cadastrada no webhook: Crie um hmac (uma identificação própria) que será acrescentado ao final da URL no momento do cadastro do webhook. Essa hash será utilizada para validar a origem da notificação. Assim, todos os webhooks enviados ao seu servidor terão essa identificação final e sua aplicação deve validar a presença da mesma.

Exemplo:
URL de notificação original: https://seu_dominio.com.br/webhook
Como deverá ser cadastrada com a hash: https://seu_dominio.com.br/webhook?hmac=xyz&ignorar=. O termo ignorar= servirá para tratar a adição do /pix no final da URL.

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver no Discord

Mesmo sem servidor dedicado, precisa do mTLS. Essa opção apenas diz que não é para verificar pois você implementou mTLS de outro jeito. mTLS não é opcional na API Pix.

Avatar discord do usuario hlyras

hlyras

Ver no Discord

Sim, mas no caso eu consigo fazer a verificação do mTLS na rota do webhook e não na configuração do servidor, certo?

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver no Discord

Sim, mas para isso o seu servidor compartilhado precisa passar como parâmetros no HTTP o certificado client de quem acionou. Aí você faz a lógica do mTLS na aplicação.