Signed URLs en Embed-tokens
Elke video op AVCaption heeft een embed-token in zijn URL: https://avcaption.com/watch/{embed_token}. Het token is de toegangsreferentie — wie een geldig token heeft kan de video afspelen, wie er geen heeft wordt geweigerd.
Voor gratis of openbare content genereer je één token per video en leeft het oneindig. Voor betaalde of gated content genereer je verse tokens per geverifieerde sessie via de REST-API.
Hoe tokens werken
Een token is een korte opaque string (standaard 32 hex-tekens). Serverzijdig mapt het op:
- Het video-ID
- Een optionele kijker-identifier (voor analytics en dynamisch watermerk)
- Een vervaltijdstempel
- Een lijst toegestane origins (je domain whitelist)
- Rate limit-metadata
Wanneer de speler een streamsleutel opvraagt, valideert de server het token, controleert vervaldatum, controleert de aanvraagorigin en geeft pas dan de AES-128-sleutel voor de volgende batch vrij.
Per-sessie-tokens via REST-API
Voor betaalde content is het aanbevolen patroon:
- Gebruiker logt in in je applicatie.
- Je applicatie verifieert de gebruiker tegen je DB.
- Je applicatie roept de REST-API van AVCaption aan:
POST /api/v1/embed-tokenmet{video_id, viewer_id, expires_in: 3600}. - AVCaption retourneert een eenmalig embed-token, geldig 1 uur.
- Je rendert de iframe met dat token.
- Het token verloopt; als de gebruiker ververst, genereert je app een nieuwe.
Dat betekent dat een gebruiker die de iframe-URL kopieert en deelt, een token doorgeeft dat binnen een uur verloopt — onbruikbaar voor herdistributie.
Domeinwhitelisting op tokenniveau
Tokens kunnen aan specifieke origins worden gebonden. Een token uitgegeven voor app.example.com werkt niet als hij wordt embed op pirate-site.com. De browser stuurt bij de master-playlist-aanvraag een Referer-header; AVCaption valideert die tegen de whitelist en weigert sleutels uit te geven.
Vergeleken met signed URL-aanpakken
Sommige platforms gebruiken signed URLs (HMAC-gesigneerde query strings op elk segment). AVCaption gebruikt opaque tokens die serverzijdig mappen op toegangsmetadata. Afwegingen:
- Signed URLs — volledig stateless, makkelijk te verifiëren op de edge. Maar zodra een URL is gesigneerd, kan hij niet worden ingetrokken vóór vervaldatum.
- Opaque tokens (AVCaption) — vereisen serverzijdige opzoeking per streamsessie, maar maken realtime intrekking, per-token-analytics en rijkere toegangsmetadata mogelijk.
Voor betaalde content waar intrekking telt, winnen opaque tokens. Zie de glossariumitem embed-token vs signed URL voor een diepere vergelijking.
Tokenrotatie
Voor zeer hoogwaardige content rouleer je tokens via de API op een schema:
POST /api/v1/embed-token/rotate
{ "video_id": "abc123" }
Dit ongeldigverklaart alle bestaande tokens voor die video en geeft een nieuwe uit. Handig na een vermoede lek of een chargeback.
Aan de slag
Embed-tokens worden automatisch uitgegeven bij elke upload, in alle tiers. De REST-API voor per-sessie-tokengeneratie is een Enterprise-functie. Registreren. Veelvoorkomende patronen: per-sessie-tokens voor online cursussen en video voor membership site.