URL Signées et Tokens d'Embed — Contrôle d'Accès Vidéo par Session

URL Signées et Tokens d’Embed

Chaque vidéo sur AVCaption a un token d’embed dans son URL : https://avcaption.com/watch/{embed_token}. Le token est la clé d’accès — quiconque a un token valide peut lire la vidéo, qui n’en a pas est refusé.

Pour le contenu gratuit ou public, vous générez un token par vidéo et il vit indéfiniment. Pour le contenu payant ou gated, vous générez des tokens frais par session authentifiée via l’API REST.

Comment fonctionnent les tokens

Un token est une courte chaîne opaque (32 caractères hex par défaut). Côté serveur il mappe vers :

  • L’ID de la vidéo
  • Un identifiant de spectateur optionnel (utilisé pour les analytics et le filigrane dynamique)
  • Un timestamp d’expiration
  • Une liste d’origines autorisées (votre liste blanche de domaines)
  • Des métadonnées de rate limit

Quand le lecteur demande une clé de stream, le serveur valide le token, vérifie l’expiration, vérifie l’origine de la requête, et seulement ensuite émet la clé AES-128 pour le lot suivant.

Tokens par session via l’API REST

Pour le contenu payant, le pattern recommandé est :

  1. L’utilisateur se connecte à votre application.
  2. Votre application authentifie l’utilisateur contre votre BDD.
  3. Votre application appelle l’API REST AVCaption : POST /api/v1/embed-token avec {video_id, viewer_id, expires_in: 3600}.
  4. AVCaption renvoie un token d’embed unique valide 1 heure.
  5. Vous rendez l’iframe avec ce token.
  6. Le token expire ; si l’utilisateur rafraîchit, votre app en génère un nouveau.

Cela signifie qu’un utilisateur qui copie l’URL de l’iframe et la partage transmet un token qui expirera dans l’heure — inutile pour la redistribution.

Liste blanche de domaines au niveau du token

Les tokens peuvent être liés à des origines spécifiques. Un token émis pour app.example.com ne fonctionne pas s’il est incorporé sur pirate-site.com. Le navigateur envoie un en-tête Referer lors de la requête de la master playlist ; AVCaption le valide contre la liste blanche et refuse d’émettre des clés.

Comparé aux approches URL signées

Certaines plateformes utilisent des URL signées (query strings signés en HMAC sur chaque segment). AVCaption utilise des tokens opaques mappés côté serveur vers les métadonnées d’accès. Compromis :

  • URL signées — entièrement stateless, faciles à vérifier à l’edge. Mais une fois une URL signée, on ne peut pas la révoquer avant expiration.
  • Tokens opaques (AVCaption) — exigent un lookup côté serveur par session de stream, mais permettent la révocation en temps réel, des analytics par token et des métadonnées d’accès plus riches.

Pour le contenu payant où la révocation compte, les tokens opaques gagnent. Voir l’entrée glossaire token d’embed vs URL signée pour une comparaison plus approfondie.

Rotation de token

Pour le contenu de très haute valeur, faites tourner les tokens via l’API selon un planning :

POST /api/v1/embed-token/rotate
{ "video_id": "abc123" }

Cela invalide tous les tokens existants pour cette vidéo et en émet un nouveau. Utile après un soupçon de fuite ou un chargeback.

Quand utiliser quel TTL

TTL Cas d’usage
5 minutes Livraison style téléchargement unique (produit numérique payant, lien de revue à usage unique)
1 heure Session authentifiée standard (portail membres, lecteur de cours)
24 heures Contenu public gratuit, vidéo marketing
30 jours Accès location à durée limitée, contenu bonus mensuel

Plus le TTL est court, plus la sécurité est haute ; plus il est long, moins vous appelez l’API d’émission de tokens. Pour la plupart des cas de contenu payant, 1 heure est le bon défaut.

Démarrer

Les tokens d’embed sont émis automatiquement à chaque upload, sur tous les paliers. L’API REST pour la génération de token par session est une fonctionnalité Enterprise — branchez-la sur votre check d’auth et vous émettrez des tokens par session qui expirent quand les sessions expirent. Ouvrez un compte gratuit, uploadez une vidéo, et vérifiez que le token par défaut de 24 heures expire quand vous vous y attendez. Patterns courants : tokens par session pour cours en ligne et vidéo membership site.

Questions fréquemment posées

Qu'est-ce qu'une URL signée pour la vidéo ? +
Une URL signée est un lien de lecture vidéo avec une signature cryptographique dans son query string prouvant que l'URL a été émise par le serveur d'origine. L'edge CDN ou l'origine vérifie la signature avant de servir le segment ; les URL altérées ou expirées sont rejetées. Les URL signées permettent aux plateformes payantes de contrôler l'accès vidéo sans stocker d'état par utilisateur à l'edge.
Combien de temps un token d'embed dure-t-il ? +
Par défaut 24 heures. Vous pouvez configurer de 5 minutes à 30 jours par vidéo, ou générer des tokens frais par session via l'API REST. Pour le contenu à forte valeur, des tokens à courte durée générés par session authentifiée sont le pattern recommandé.
Puis-je révoquer un token en pleine lecture ? +
Oui. Révocation via tableau de bord ou API. La prochaine demande de clé de cette session échoue — la lecture s'arrête en moins de 60 secondes (à la prochaine frontière de lot).
URL signée ou token d'embed — lequel utiliser ? +
Tokens d'embed pour le contenu payant où la révocation compte ; URL signées pour la vérification stateless à l'edge. AVCaption utilise des tokens d'embed opaques qui mappent côté serveur vers les métadonnées d'accès, vous pouvez donc révoquer instantanément un token fuité. Les URL signées pures sont stateless mais ne peuvent pas être révoquées avant leur expiration. Voir la comparaison embed token vs URL signée pour l'arbitrage complet.
← content.back_to_index