Skydda webhook-nyttolaster med en hemlighet

Slutförd

När funktionen har konfigurerats för att ta emot nyttolaster lyssnar den efter alla nyttolaster som skickas till slutpunkten som du har konfigurerat. Av säkerhetsskäl kanske du vill att begäranden begränsas till de som kommer från GitHub. Det finns flera sätt att göra detta på. Du kan till exempel välja att godkänna begäranden från GitHubs IP-adress. En enklare metod är att konfigurera en hemlig token och verifiera begäranden med hjälp av denna token.

I exemplet är IT-avdelningens ledning nöjd med den webhook-utlösta funktionen som du har skapat i Azure Functions-appen. All information om uppdateringar av företagets wiki-sida parsas av funktionsappen och skickas till företaget varje gång Gollum-händelsen utlöses. Ledningen har frågat hur säker informationen är som skickas från GitHub. Du har blivit ombedd att hitta ett sätt att skydda informationen och verifiera att det är GitHub som skickar uppdateringarna.

I den här lektionen lär du dig att skydda din webhook-nyttolast med en hemlighet och verifiera nyttolasterna från GitHub.

Webhook-hemligheter

Om en webhook-hemlighet har angetts kan du säkerställa att POST-begäranden som skickas till nyttolastens URL är från GitHub. När du anger en hemlighet får du x-hub-signature-huvudet i POST-begärandet för webhooken.

I GitHub kan du ange det hemliga fältet genom att gå till lagringsplatsen där du har konfigurerat webhooken och sedan redigera webhooken. I exemplet i nästa övning visar vi hur du gör.

Verifiera nyttolaster från GitHub

När din hemliga token har angetts använder GitHub den för att skapa en hash-signatur för varje nyttolast. Hash-signaturen skickas tillsammans med varje begäran i huvudena som x-hub-signature.

När din funktion tar emot en begäran måste du beräkna hashen med din hemlighet och kontrollera att den matchar hashen i begärandehuvudet. GitHub använder en hexadecimal sammanfattad HMAC SHA1 för att beräkna hashen, så du måste beräkna din hash på samma sätt med nyckeln i din hemlighet och nyttolastens meddelandetext. Hash-signaturen börjar med texten sha1=.