๐Ÿ‡ณ๐Ÿ‡ฑ
DASTRA
LoginBlog
Nederlands
Nederlands
  • Inleiding tot Dastra
  • ๐Ÿ‡ช๐Ÿ‡บNuttige herinneringen
    • Inleiding tot de AVG
    • AVG kernbegrippen
      • Persoonsgegevens
      • Register van verwerkingen
      • Effectbeoordeling
      • Bewaartermijnen
      • Rechten van betrokkenen
      • Vertrouwelijkheid bij ontwerp en standaard
      • Beveiligingsmaatregelen
      • Gegevensinbreuken
    • Risicobeheer
      • Risico definitie
      • Risicobeoordeling
      • Risico's verwerker
  • ๐Ÿ‘จโ€๐Ÿ’ปAan de slag
    • Opzetten
      • Werkruimte aanmaken en instellen
      • Organisatorische eenheden aanmaken en instellen
      • Wijs een DPO aan
      • Een leidende autoriteit toevoegen
      • Gebruikers uitnodigen
      • Beheer rollen en rechten
      • Teams maken en toewijzen
      • Veelgestelde vragen
    • Handleiding
      • Stap 1: Instellen
      • Stap 2: Uw persoonlijke gegevensverwerking in kaart brengen en het register instellen
      • Stap 3: Risico's beheren
      • Stap 4: Prioriteit geven aan te nemen acties
      • Stap 5: Implementeer interne processen
      • Stap 6: naleving van documenten
    • Ondersteuning
      • De astronaut-assistent
      • Online hulp
      • Dien een ondersteuningsverzoek in
  • โš™๏ธFuncties
    • Dashboard
    • Algemeen
      • Geavanceerde filters
      • Importeer je gegevens (Excel, Csv)
      • Tag beheer
      • Aangepaste velden
      • ๐Ÿ˜‡AI Assistant (beta)
      • Email templates
    • Gegevens in kaart brengen
      • Repositories
    • Register van verwerkingen
      • Register van verwerkingsverantwoordelijken
      • Verwerker-register
      • Je register instellen
      • Het register exporteren/importeren
      • Een verwerkingsmodel gebruiken
      • Een behandeling declareren
      • Een verwerking voltooien
        • Algemeen
        • Stakeholders
        • Doelen
        • Gegevens en retentie
        • Activa
        • Betrokken personen
        • Ontvangers
          • Doorgifte van gegevens buiten de EU
        • Beveiligingsmaatregelen
        • Effectbeoordeling
        • Documenten
      • Creรซer een relatie tussen verwerkingen
      • Verwerking van frisheid
      • Het register delen
      • Gegevensvisualisatie
        • Verwerkingsboom weergeven
        • De registergegevenskaart weergeven
        • Bekijk de doorgiftenkaart
      • Veelgestelde vragen
    • Documentbeheer
      • Documentsjablonen
    • Audits en PIA's
      • Een auditmodel of een PIA maken of wijzigen
      • Een audit of PIA plannen
      • Een auditrapport of PIA delen
      • Een audit of auditsjabloon verwijderen
      • Veelgestelde vragen
    • Risicobeheer
      • Woordenlijst
      • Het risicobeheerproces
        • 1. Identificeer
        • 2.beoordeling
        • 3.mastering
        • 4. Controleer
      • Vergelijking Dastra / eBios RM
      • Risico koppelen aan een Verwerking
      • Veel gestelde vragen
    • Planning
      • Een taak maken of wijzigen
      • Een project of iteratie maken of wijzigen
      • Taken volgen, filteren of exporteren
      • Takenworkflow aanpassen
      • Synchroniseren met andere kalenders
      • Veelgestelde vragen
    • Rechten van betrokkenen beheren
      • Beheer van verzoeken om rechten uit te oefenen
      • widget voor het verzamelen van verzoeken
      • Technische integratie
      • API-integratie
    • Gegevensinbreuken documenteren
      • Een nieuw inbreuk documenteren
      • Exporteer je inbreuken
    • Cookies
      • De widget instellen
        • Vooronderzoek
        • Scan de cookies die op uw website zijn geplaatst
        • Cookies classificeren op toestemmingscategorieรซn
        • De doeleinden van cookies
        • Een cookie-toestemmingswidget configureren
        • Verzamel bewijs van cookie-toestemming
        • Ga verder met toestemming voor cookies
        • In geval van onbeschikbaarheid
      • Technische integratie
        • Werking van de widget
        • Snel aan de slag
          • Wordpress
        • Taalbeheer
        • Widget integratie testen
        • Blokkeer cookies
          • Blokkeer iframes (twitter/youtube...)
          • Google Tag Manager
        • Geavanceerd ontwerp
        • Toestemming programmatisch beheren
        • Gebruikersidentificatie
        • Mobiele toepassingen
          • Hybride toepassingen
          • Native-applicaties
        • TCF 1.1/2.0
      • RGAA-naleving
      • Problemen oplossen
    • Bestandsbeheer
      • Gebruikersgids
      • Machtigingen en toegangsrechten
    • Geavanceerde configuratie
      • Rollen en machtigingen
      • Single Sign On (SSO)
        • SAML 2
        • OpenId
        • ADFS
        • Active Directory
        • Okta
        • Bekende problemen
      • SCIM
      • API-sleutelbeheer
      • Meldingen
      • OneDrive/Google Drive-integraties
      • Workflowstappen / processtroom
      • Webhooks
      • SMTP-configuratie
      • Workflow-regels
      • Berichtsjablonen
      • E-mail domeinen
  • ๐Ÿ“„API-documentatie
    • API-configuratie
    • Authenticatie
    • API referenties
    • Integraties via Zapier
  • ๐Ÿ›ก๏ธBeveiliging
    • Beveiliging bij Dastra
    • Sterke authenticatie
    • Kwaliteit van onze diensten
  • ๐Ÿค–DIVERSEN
    • Veelgestelde vragen
    • Bekende problemen
    • Release-opmerkingen
Powered by GitBook
On this page
  • Concept
  • Configuratie ๐Ÿ› ๏ธ
  • Hoe de webhook te ontvangen ๐Ÿ›ฌ
  • Test uw webhook url ๐Ÿงช
  • Hoe beveilig ik mijn webhook? ๐Ÿ›ก๏ธ
  • Wat gebeurt er als de url reageert met iets anders dan 200?

Was this helpful?

  1. Functies
  2. Geavanceerde configuratie

Webhooks

Leer alles over het integreren van webhooks in Dastra

PreviousWorkflowstappen / processtroomNextSMTP-configuratie

Last updated 1 year ago

Was this helpful?

Concept

Eenvoudig gezegd worden webhooks gebruikt om een actie** te triggeren na een gebeurtenis. Ze worden over het algemeen gebruikt om systemen met elkaar te laten communiceren. Dit is de eenvoudigste manier om een waarschuwing te ontvangen wanneer er iets gebeurt in Dastra. Het doel is om toepassingen van derden (API, CRM, serverloze functies, enz.) in realtime op de hoogte te brengen.

Configuratie ๐Ÿ› ๏ธ

Om uw webhooks te configureren, gaat u naar:

(<../../.gitbook/assets/image (252) (1) (1) (1).png>)

  • Klik op maak een "webhook url".

  • Voer je webhook ontvangst url in. Voor meer informatie, zie de sectie .

  • Voer de relevante werkruimte in

  • Selecteer de gebeurtenis(sen) waarop u zich wilt abonneren. Het type gegevens dat wordt geretourneerd, verschilt afhankelijk van het type gebeurtenis. Je kunt de webhook bijvoorbeeld triggeren wanneer een nieuw verzoek om een recht uit te oefenen wordt aangemaakt. In dit geval zal de verzoektekst een json bevatten

  • De webhook opslaan

Dit brengt u naar het webhook detailscherm..

Hoe de webhook te ontvangen ๐Ÿ›ฌ

Om verzoeken van de webhook te ontvangen, moet je een event capture API endpoint maken. Het verzoek is in POST en zal altijd op deze manier gestructureerd zijn. De request body bevat een json met details van het getriggerde event.

Hier is de algemene structuur van het verzonden antwoord:

{
 "webhookId": <id van de webhook geconfigureerd in dastra>,
 "signatureUrl": "https://yourapi.com/webhooks/handle",
 "userId": <De gebruiker die het event heeft getriggerd>,
 "eventType": <De id van de gebeurtenis>,
 "eventName": <Het label van de gebeurtenis>,
 "data": <Dynamische gegevens van de gebeurtenis>,
 "date": <datum van de gebeurtenis>.
} 

Er wordt een time-out van 10 seconden toegepast op het verzoek, waarna het verzoek een foutmelding krijgt. De responscode moet 200.&#x20 zijn;

Er kan een kleine vertraging optreden tussen het moment dat het event optreedt in de applicatie en het moment dat de webhook wordt getriggerd (deze vertraging heeft te maken met de asynchrone aard van de uitvoering van webhooks in onze infrastructuur). Deze vertraging varieert afhankelijk van de belasting van onze infrastructuur en kan oplopen tot maximaal 60-120 seconden.

Er is momenteel geen systeem om mislukte webhooks opnieuw af te spelen en zo te compenseren voor eventuele onbeschikbaarheid van de servers die de webhooks ontvangen. In dit geval raden we aan om de mislukte gebeurtenissen handmatig te synchroniseren.

Test uw webhook url ๐Ÿงช

U kunt nu uw webhook in echte omstandigheden testen door op de knop "Testen" te klikken.

Hoe beveilig ik mijn webhook? ๐Ÿ›ก๏ธ

Ook al is het niet verplicht, het wordt aanbevolen om het inkomende verzoek van de webhook te valideren om mogelijke aanvallen te voorkomen van een hacker die het netwerk heeft afgeluisterd en zo alles op uw webhook url kan plaatsen en zo de aanmaak van elementen in uw systeem kan triggeren of spammen.

Elke keer dat er een verzoek wordt gedaan om een element in Dastra te wijzigen of te verwijderen, posten we een object naar alle url's die je hebt geconfigureerd voor de gewenste gebeurtenis. Elk POST verzoek zal een Dastra-handtekening header bevatten, die kan worden opgehaald aan de server kant

Deze header komt overeen met de volledige JSON gepost is gehashed met behulp van het HMAC-Sha256 algoritme met behulp van de webhook validatiesleutel.

DastraSignature = HMAC256(<geserialiseerde JSON van POST>,<webhook validatiesleutel>)

Hier zijn enkele voorbeelden van het valideren van de verzoekhandtekening:

error_reporting(E_ALL);
ini_set('display_errors', 1); 
c
$secret = "your dastra validation key";// your secret key
$payload = "";// equest body
$headers = "";// request message headers array

$signature = "";// the HMAC hash key in the HTTP header 'Dastra-Signature'
$result = false;// verification result

if (isset($_POST)) {
    try {
        $payload = file_get_contents('php://input');
        $headers = get_ds_headers();
        if (array_key_exists("Dastra-Signature", $headers)) {
            $signature = $headers["Dastra-Signature"];
            $result = hash_is_valid($secret, $payload, $signature);
            log_result($signature, $payload, $result);
        }
     } catch (Exception $e) {
        logger("\nException: " . $e->getMessage() . "\n");
    }
    header("HTTP/1.1 200 OK");
}

function get_ds_headers()
{
    $headers = array();
    foreach ($_SERVER as $key => $value) {
        if (strpos($key, 'HTTP_') === 0) {
            $headers[str_replace(' ', '', ucwords(str_replace('_', ' ', strtolower(substr($key, 5)))))] = $value;
        }
    }
    return $headers;
}
 
function compute_hash($secret, $payload)
{
    $hexHash = hash_hmac('sha256', $payload, utf8_encode($secret));
    $base64Hash = base64_encode(hex2bin($hexHash));
    return $base64Hash;
}
 
function hash_is_valid($secret, $payload, $verify)
{
    $computed_hash = compute_hash($secret, $payload);
     return hash_equals($verify,$computed_hash);
 }

[HttpPost]
public IActionResult Handle(){
    string dastraSignature = Request.Headers["Dastra-Signature"];
    string key = "Your validation key";
    string payload = GetRequestBody();
}

private static bool ValidateSignature(string signature, string payload, string secret)
{
    using (var hmacsha256 = new HMACSHA256(Encoding.UTF8.GetBytes(secret)))
    {
        var hash = hmacsha256.ComputeHash(Encoding.UTF8.GetBytes(payload));
        var result = Convert.ToBase64String(hash);
    }
    
    return result.Equals(signature)
}

private static string GetRequestBody()
{
    var bodyStream = new StreamReader(Request.InputStream);
    bodyStream.BaseStream.Seek(0, SeekOrigin.Begin);
    var bodyText = bodyStream.ReadToEnd();
    return bodyText;
}

Wat gebeurt er als de url reageert met iets anders dan 200?

De webhook wordt automatisch geblokkeerd en als fout beschouwd wanneer de drempel van 5 fouten wordt overschreden.

โš™๏ธ
https://app.dastra.eu/general-settings/webhooks
Hoe de webhook ontvangen