Webhook-payloads beveiligen met een geheime sleutel
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 beheer van uw IT-afdeling blij met de door de webhook geactiveerde functie die u hebt gemaakt in een Azure Functions-app. Alle informatie over updates van de bedrijfswiki wordt door die functie geparseerd en naar het bedrijf verzonden telkens wanneer de Gollum-gebeurtenis wordt geactiveerd. 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 deze eenheid leert u hoe u de webhook-payload kunt beveiligen met een secret en payloads 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 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 behulp van uw geheim en ervoor zorgen dat deze overeenkomt met de hash in de aanvraagheader. GitHub gebruikt een HMAC SHA1 hexadecimale tekenreeks om de hash te berekenen, dus u moet uw hash op dezelfde manier berekenen, met behulp van de geheime sleutel en uw payload. De hash-handtekening begint met de tekst sha1=
.