Sobre a integração com sistemas privados via proxy reverso
Talvez você queira fornecer webhooks do GitHub para sistemas privados que não são diretamente acessíveis pela Internet, como sistemas de CI, ferramentas de gerenciamento de trabalho e aplicativos personalizados. Você pode usar um proxy reverso para receber cargas de webhook da de GitHub e entregá-las ao seu sistema privado.
Um proxy reverso é um servidor da Web que fica entre um cliente e um aplicativo. O proxy reverso recebe solicitações do cliente e as encaminha ao aplicativo. Isso garante que não ocorra nenhuma comunicação direta entre os clientes na Internet e o aplicativo subjacente. Vários sistemas podem servir como proxy reverso, incluindo:
- servidores Web, como o nginx
- Gateways de API
- redes de sobreposição gratuitas e de código aberto, como o OpenZiti
- ferramentas comerciais de gerenciamento de entrada, como o ngrok
- Ferramentas gratuitas de gerenciamento de entrada de código aberto, como o Zrok
A forma de configurar o proxy reverso varia de acordo com o sistema que você está usando.
Protegendo o tráfego para seu proxy reverso
Ao implantar um proxy reverso, você deve seguir todas as práticas recomendadas pelo seu provedor de proxy reverso para proteger o servidor proxy subjacente. Além disso, você deve seguir as etapas a seguir para garantir que apenas as solicitações da GitHub sejam encaminhadas ao seu aplicativo.
Limitação do tráfego de entrada para webhooks da GitHub
Você deve configurar seu proxy reverso para permitir apenas solicitações POST HTTPS do subconjunto de intervalos de IPs do GitHub que são usados para fornecer webhooks. Isso garante que seu proxy reverso não processe ou encaminhe outras solicitações.
O ponto de extremidade /meta
retorna um objeto JSON que lista os intervalos de IPs do GitHub. Os intervalos de IPs usados para fornecer webhooks estão listados no elemento hooks
.
Validação de cargas de webhooks
Se o seu webhook estiver configurado com um token secreto, o GitHub incluirá um hash criptográfico de cada carga útil do webhook. Você deve usar esse hash para validar a carga recebida do GitHub antes que qualquer medida seja tomada pelo seu sistema privado. Para saber mais, confira Validação de entregas de webhooks.
Você pode implementar a validação de carga útil no proxy reverso ou no seu sistema privado.