Proteger conteúdos do webhook com um segredo

Concluído

Depois que a função estiver configurada para receber conteúdo, ela escutará qualquer conteúdo enviado ao ponto de extremidade configurado. Por motivos de segurança, você talvez queira limitar as solicitações àquelas vindas do GitHub. Há algumas maneiras de fazer isso. Por exemplo, você pode aceitar solicitações de aprovação do endereço IP do GitHub. Um método mais fácil é definir um token de segredo e validar a solicitação usando esse token.

No cenário de exemplo, a gerência do departamento de TI está satisfeita com a função disparada do webhook que você criou em um aplicativo Azure Functions. Todas as informações sobre atualizações ao wiki da empresa estão sendo analisadas por essa função e enviadas para a empresa sempre que o evento Gollum é disparado. A gerência perguntou o quão seguras são as informações transmitidas do GitHub. Você foi solicitado a encontrar uma maneira de proteger as informações e verificar se é o GitHub que está enviando as atualizações.

Nesta unidade, você aprenderá a proteger seu conteúdo do webhook com um segredo e validar conteúdos do GitHub.

Segredos do Webhook

Definir um segredo de webhook permite que você verifique se as solicitações POST enviadas à URL do conteúdo são do GitHub. Quando você define um segredo, recebe o cabeçalho x-hub-signature na solicitação POST do webhook.

No GitHub, você pode definir o campo segredo acessando o repositório em que configurou o webhook e editando o webhook. Mostraremos como fazer isso em nosso exemplo no próximo exercício.

Validando conteúdos do GitHub

Quando seu token de segredo é definido, o GitHub o usa para criar uma assinatura de hash para cada conteúdo. Essa assinatura de hash é passada junto com cada solicitação nos cabeçalhos como x-hub-signature.

Quando sua função recebe uma solicitação, você precisa computar o hash usando o segredo e garantir que ele corresponda ao hash no cabeçalho da solicitação. O GitHub usa um resumo de hexadecimal HMAC SHA1 para computar o hash, portanto, você deve calcular o hash da mesma forma usando a chave do seu segredo e o corpo do conteúdo. A assinatura de hash começa com o texto sha1=.