埋め込みトークンと署名付きURL — 動画アクセス制御の2パターン

埋め込みトークンと署名付きURL

動画の再生可否を制御する2つのパターン: 不透明な埋め込みトークン(サーバー側でルックアップ)と署名付きURL(HMAC署名のクエリ文字列)。両者ともに広く使われ、トレードオフが異なります。

埋め込みトークン(不透明)

サーバー側でアクセスメタデータ(動画ID、許可オリジン、有効期限、ウォーターマーク用視聴者ID、レート制限)にマッピングされる短い不透明な文字列。

長所:

  • リアルタイム取消 — DBでトークンを無効化すれば、次の鍵取得から失敗する。
  • 豊富なメタデータ — トークンごとの分析、カスタムレート制限、動的ウォーターマークの紐付け。
  • 短く綺麗なURL — /watch/abc123

短所:

  • サーバー側状態 — 鍵取得のたびにDBルックアップでトークンを検証する。
  • キャッシュミス時にレイテンシがやや高い。

採用例: AVCaption。

署名付きURL(HMAC)

URLに暗号学的署名を付加する方式: /segment.ts?expires=1735689600&sig=abcdef...。プラットフォームサーバーが秘密鍵で署名を計算し、エッジで検証 — DBルックアップは不要です。

長所:

  • ステートレス — CDNエッジでサーバー往復なしに検証可能。
  • 高速 — 暗号学的検証はマイクロ秒オーダー。

短所:

  • 取消不可 — 一度署名すれば有効期限まで有効。
  • メタデータが少ない — URLパラメータに収まる範囲。
  • URLが長い。

採用例: AWS S3 presigned URL、CloudFront署名URL、Cloudflare Stream署名URL。

それぞれの使い分け

**埋め込みトークン(不透明)**が適するのは:

  • 発行後にアクセスを取り消す必要がある(返金、アカウント停止)
  • 視聴者ごとの分析や動的ウォーターマークが必要
  • 埋め込み用に短く綺麗なURLが欲しい

署名付きURLが適するのは:

  • DBルックアップのオーバーヘッドが効いてくる超大規模で運用している
  • 取消が不要(短い有効期限で十分)
  • 配信レイヤー(CDNエッジ)が署名検証をネイティブ対応している

有料講座や限定コンテンツには不透明な埋め込みトークンが向き、単発の公開配信には署名付きURLがシンプルです。

AVCaptionは不透明トークンを採用し、動的アクセス制御のためにREST API経由のセッションごと生成も提供します。

関連項目

← content.back_to_index