Webhook Push Connector — Authenticatie Architectuur
Overzicht
De webhook push connector stelt externe HR-systemen in staat om medewerkersdata actief naar AutoMate te pushen via HTTP-aanroepen. Omdat de webhook-endpoint publiek bereikbaar moet zijn voor externe systemen, zijn er twee afzonderlijke authenticatielagen ingericht die samen een defence-in-depth strategie vormen.
De twee lagen zijn bewust van elkaar gescheiden: laag 1 beschermt het externe inkomende verkeer via een HMAC-token en een optionele IP-safelist, laag 2 beschermt de interne API-endpoints zodat ze nooit direct van buitenaf bereikbaar zijn zonder de portaalproxy.
Laag 1 — Externe Authenticatie (WebhooksController)
Locatie van WebhooksController
Portals/ManagementPortal/Src/ManagementPortal.Website/Controllers/WebhooksController.cs
Inkomend verzoek
Externe systemen sturen hun aanroepen naar de Management Portal, niet rechtstreeks naar de API:
HTTP-methode | URL (portal) | Gedrag |
|---|---|---|
|
| Push (aanmaken/wijzigen) |
|
| Soft delete |
|
| Dry-run push |
|
| Dry-run soft delete |
|
| Hard delete |
|
| Hard delete dry-run |
Validatiestappen
De WebhooksController voert de volgende controles uit vóór het doorstuuren van het verzoek:
HMAC-token verificatie
Het authenticatietoken wordt berekend via WebhookAuthenticationHelper.GetToken(string password, Guid tenantId), geïmplementeerd in zowel de portal (ManagementPortal.Website/Helpers/) als de API (Features/IAM/Webhooks/Helpers/).
Parameter | Waarde |
|---|---|
Algoritme | PBKDF2 / RFC 2898 |
Hash-functie | SHA-256 |
Iteraties | 350.000 |
Output lengte | 64 bytes (Base64-gecodeerd) |
Salt | Tenant-GUID als UTF-8 bytes (koppeltekens vervangen door |
Sleutel |
|
De tokenvalidatie gebruikt CryptographicOperations.FixedTimeEquals voor constante-tijd vergelijking om timing-aanvallen te voorkomen.
IP-safelist
Als IpSafeList geconfigureerd is in de tenant webhook-instellingen, wordt het IPv4-adres van de beller vergeleken met de puntkomma-gescheiden lijst. IPv4-gemapte IPv6-adressen worden automatisch omgezet naar IPv4 vóór de vergelijking. Verzoeken van niet-gewhitelistede IP-adressen krijgen 403 Forbidden.
Payload transformatie
Na succesvolle validatie wikkelt de controller de originele payload in een Payload-object:
Het verzoek wordt doorgestuurd via de named HttpClient("WebhooksBackend") inclusief:
X-Tenant-Idheader met de gevalideerde tenant-GUIDX-Internal-Api-Keyals default header (automatisch door deHttpClient-registratie)Accept-Languageheader overgenomen uit de huidige cultuur
Laag 2 — Interne Authenticatie (WebhookInternalAuthProcessor)
Locatie van WebhookInternalAuthProcessor
API/Src/AutoMate.API/Processors/WebhookInternalAuthProcessor.cs
Werking
De WebhookInternalAuthProcessor is een FastEndpoints IGlobalPreProcessor die alle inkomende verzoeken naar /iam/webhooks/* onderschept, met uitzondering van /iam/webhooks/configuration.
De processor vervangt hier het normale TenantGuard-mechanisme: omdat webhook-endpoints [AllowAnonymous] zijn (ze hebben geen JWT-sessie), slaat TenantGuard ze over. De WebhookInternalAuthProcessor neemt deze taak over door expliciet IMultiTenantService.SetTenantId(tenantId) aan te roepen.
Tenant context
Na succesvolle validatie is de tenant context beschikbaar via IMultiTenantService voor alle downstream services en endpoint-handlers — exact hetzelfde mechanisme als bij gewone API-endpoints met de X-Tenant-Id header. Zie ook de platformdocumentatie over Multi-Tenancy.
Endpoint Overzicht
Methode | Pad | Auth | Beschrijving |
|---|---|---|---|
|
| Identity (JWT) | Wizard: configuratie tonen/beheren |
|
|
| Portal proxy haalt config op |
|
| Intern key + tenant header | Push: medewerkers aanmaken/wijzigen |
|
| Intern key + tenant header | Soft delete medewerkers |
|
| Intern key + tenant header | Dry-run push zonder schrijven |
|
| Intern key + tenant header | Dry-run soft delete |
|
| Intern key + tenant header | Hard delete medewerkers |
|
| Intern key + tenant header | Dry-run hard delete |
Configuratie
Beide de portal en de API lezen Webhooks:InternalApiKey uit hun respectievelijke configuratie. De waarden moeten identiek zijn.
Setting | Component | Beschrijving |
|---|---|---|
| Management Portal | Wordt als default header op |
| AutoMate API | Verwachte waarde in |
HttpClient registratie (portal Program.cs)
De X-Internal-Api-Key wordt eenmalig ingesteld bij registratie van de HttpClient en wordt automatisch meegestuurd met alle verzoeken van WebhooksController naar de API — zonder dat de controller daar expliciet iets voor hoeft te doen.
Gerelateerde pagina's
Pipeline Architectuur — IAM HR Sync job pipeline
IAM HR Sync Jobs — Alle jobs in detail