Ga naar hoofdinhoud
Audact
Bekijk het aanbod

Tenancymodel — twee ondersteunde vormen

Audact ondersteunt zowel publieke sleutelvrije als organisatiegebonden tenantprovisioning. Kies de vorm die bij uw integratie past.

Audact ondersteunt beide vormen van tenantprovisioning waaruit een integrator mogelijk kiest — dit is een ontwerpbeslissing aan de kant van de aanroeper, geen lacune in de API.

Vorm 1 — Publieke, sleutelvrije aanmaak van tenants

POST /v1/tenants (tenantbeheer, niet-geverifieerd)

  • Geen API-sleutel of organisatieaccount vereist om dit eindpunt aan te roepen.
  • IP-ratelimiet van 5 aanmaken per IP per uur, omdat het eindpunt anders open staat.
  • Tenantlevenscyclus vanaf hier: GET /v1/tenants/{tenant_id} (viewer+), PUT /v1/tenants/{tenant_id} (eigenaar), API-sleutels via POST/GET/DELETE /v1/tenants/{tenant_id}/keys[/{key_id}] (eigenaar voor aanmaken/intrekken, developer+ voor weergave).

Vorm 2 — Organisatiegebonden tenants met volledige levenscyclus

POST /v1/org/tenants (organisatiebeheer, vereist een geverifieerde organisatie) — provisioneert een tenant die eigendom is van de organisatie van de aanroeper, bewust zonder API-sleutel of standaardconfiguratie; die worden uitgesteld tot een afzonderlijke initialize-stap zodat het aanmaken en activeren van een tenant twee auditeerbare acties zijn.

Volledige levenscyclus onder het organisatiegebonden model:

EindpuntEffect
POST /v1/org/tenantsMaakt de tenantrij aan, eigendom van de organisatie. Nog geen sleutel, nog geen configuratie.
POST /v1/org/tenants/{id}/initializePlant de eerste verzegelde standaardconfiguratie van de tenant en onthult zijn eerste eigenaar-API-sleutel (idempotent — geeft 409 already_initialized terug bij een tweede aanroep in plaats van te dupliceren).
POST /v1/org/tenants/{id}/keysMaakt een extra eigenaar-API-sleutel aan zonder de configuratie te wijzigen.
POST /v1/org/tenants/{id}/enableStelt status=active in, verwijdert de org:tenant-disabled Redis-markering.
POST /v1/org/tenants/{id}/disableDit is PAUZEREN — zie hieronder.
DELETE /v1/org/tenants/{id}Logische verwijdering: stelt deleted_at in, plaatst de org:tenant-disabled-markering. De KMS HMAC-sleutel van de tenant wordt bewaard, nooit gedeprovisioned.
POST /v1/org/tenants/{id}/restoreVerwijdert deleted_at van een zacht-verwijderde tenant; hergebruikt de oorspronkelijke hmac_key_arn (geen herprovisioning, geen nieuwe configuratie/sleutel).
POST /v1/org/tenants/{id}/impersonateMaakt een kortlevend (~20 min) tenant-scoped JWT aan zodat de organisatiebeheerder kan optreden als eigenaar van de tenant tegenover tenant-gerichte diensten; elke aanroep wordt geauditlogd.

disable is een echte PAUZE

POST /v1/org/tenants/{id}/disable brengt de tenant over naar status=disabled en plaatst de org:tenant-disabled:{tenant_id} Redis-markering. Vanaf dat moment:

  • De API-sleutelauthenticatiemiddleware controleert deze markering op het hot path en weigert elk verzoek dat is geverifieerd met de API-sleutels van die tenant met 403, foutcode tenant_disabled — inclusief tokens die zijn aangemaakt via impersonatie.
  • De controle faalt open (staat het verzoek door, logt een waarschuwing) als Redis zelf niet bereikbaar is, zodat een Redis-uitval zelf geen beschikbaarheidsincident kan worden voor tenants die niet zijn uitgeschakeld.
  • enable verwijdert de markering en herstelt status=active; de terugkeer is onmiddellijk.

Dit is het tenant-granulariteitsequivalent van een PAUZE. DID-niveau pauze — een telefoonnummer vasthouden zonder het te routeren — is een afzonderlijk concept.

Per-tenant isolatie in beide vormen

  • API-sleutels en het webhook HMAC-ondertekeningsgeheim zijn per tenant, ongeacht welke vorm de tenant heeft aangemaakt — er is geen gedeeld/globaal ondertekeningsgeheim.
  • Elke query in tenantbeheer/organisatiebeheer bereikt door middel van tenant_id vanuit de geverifieerde context, nooit vanuit een veld in de verzoekbody.

Aanbeveling

Één Audact-tenant per integratorzijde-tenant geeft u per-tenant API-sleutel/geheim-isolatie, de disable → PAUZE-mapping op exact het granulariteitsniveau dat u waarschijnlijk wilt, en de bestaande cross-tenant-isolatiegrens van Audact — gratis, zonder extra opbouw. De API dwingt deze mapping niet af, maar het is de eenvoudigste om over te redeneren.

Bron bijgewerkt: 19 oktober 2026