Webhookpayloads met een geheim beveiligen
Nadat uw functie is geconfigureerd voor het ontvangen van nettoladingen, luistert deze naar elke nettolading die is verzonden naar het eindpunt dat u hebt geconfigureerd. Om veiligheidsredenen kunt u aanvragen beperken tot aanvragen van GitHub. Er zijn een paar manieren om dit aan te pakken. U kunt er bijvoorbeeld voor kiezen aanvragen van het IP-adres van GitHub goed te keuren. Een eenvoudigere methode is om een geheim token in te stellen en de aanvraag met dit token te valideren.
In het voorbeeldscenario is het management van uw IT-afdeling blij met de door webhook geactiveerde functie die u hebt gemaakt in een Azure Functions-app. Steeds wanneer de Gollum-gebeurtenis wordt geactiveerd, wordt alle informatie over updates van de bedrijfswiki door die functie geparseerd en naar het bedrijf verzonden. Het beheer heeft gevraagd hoe veilig de informatie is die wordt doorgegeven vanuit GitHub. Ze hebben u gevraagd een manier te vinden om de informatie te beveiligen en te controleren of GitHub updates verzendt.
In dit gedeelte leert u hoe u uw webhookpayload kunt beveiligen met een geheim en nettoladingen van GitHub kunt valideren.
Webhookgeheimen
Door een webhookgeheim in te stellen, kunt u ervoor zorgen dat POST-aanvragen die naar de nettolading-URL worden verzonden, afkomstig zijn van GitHub. Als u een geheim instelt, ontvangt u de x-hub-signature
-header in de webhook POST-aanvraag.
In GitHub kunt u het geheime veld instellen door naar de opslagplaats te gaan waar u uw webhook hebt ingesteld en vervolgens de webhook te bewerken. In de volgende oefening ziet u hoe u dat doet.
Nettoladingen van GitHub valideren
Wanneer uw geheime token is ingesteld, gebruikt GitHub het om een hash-handtekening te maken voor elke nettolading. Deze hash-handtekening wordt samen met elke aanvraag in de headers als x-hub-signature
doorgegeven.
Wanneer uw functie een aanvraag ontvangt, moet u de hash berekenen met uw geheim en controleren of deze overeenkomt met de hash in de aanvraagheader. GitHub gebruikt een HMAC SHA1 hexadecimaal om de hash te berekenen, dus u moet uw hash op dezelfde manier berekenen, met behulp van de sleutel van uw geheim en uw nettolading. De hash-handtekening begint met de tekst sha1=
.