Embed Token so với Signed URL
Hai mẫu (pattern) để kiểm soát ai được phát một video: embed token mờ (tra cứu phía server) và signed URL (chuỗi truy vấn ký HMAC). Cả hai đều phổ biến; chúng có đánh đổi khác nhau.
Embed token (mờ - opaque)
Một chuỗi mờ ngắn, ánh xạ phía server đến metadata truy cập: ID video, origin được phép, hạn dùng, ID người xem cho watermark, rate limit.
Ưu điểm:
- Thu hồi tức thời — vô hiệu hóa token trong DB và lần lấy khóa kế tiếp sẽ thất bại.
- Metadata phong phú — thống kê theo từng token, rate limit tùy biến, gắn watermark động.
- URL ngắn, sạch —
/watch/abc123.
Nhược điểm:
- Trạng thái phía server — mỗi lần lấy khóa đều phải tra cứu DB để xác thực token.
- Độ trễ cao hơn chút khi cache miss.
Dùng bởi: AVCaption.
Signed URL (HMAC)
URL có chữ ký mật mã đính kèm: /segment.ts?expires=1735689600&sig=abcdef.... Chữ ký do máy chủ nền tảng tính bằng khóa bí mật, và xác minh tại edge — không cần roundtrip về server.
Ưu điểm:
- Không trạng thái — xác minh được tại edge CDN không cần roundtrip server.
- Nhanh — kiểm tra mật mã chỉ tốn microgiây.
Nhược điểm:
- Không thu hồi được — đã ký là hợp lệ tới khi hết hạn.
- Ít metadata — chỉ những gì có thể nhét vào tham số URL.
- URL dài hơn.
Dùng bởi: AWS S3 presigned URL, CloudFront signed URL, Cloudflare Stream signed URL.
Khi nào nên chọn cái nào
Embed token (mờ) phù hợp khi:
- Bạn cần thu hồi truy cập sau khi cấp (hoàn tiền, đình chỉ tài khoản)
- Bạn muốn thống kê từng người xem hoặc watermark động
- Bạn muốn URL ngắn sạch để nhúng
Signed URL phù hợp khi:
- Bạn vận hành ở quy mô khổng lồ nơi chi phí tra cứu DB là đáng kể
- Thu hồi không bắt buộc (hạn dùng ngắn là đủ)
- Lớp phân phối (edge CDN) xác minh chữ ký gốc
Với khóa học trả phí và nội dung có hạn chế, embed token mờ phù hợp hơn. Với phân phối nội dung công khai một lần, signed URL đơn giản hơn.
AVCaption dùng token mờ kèm tùy chọn sinh theo phiên qua REST API để kiểm soát truy cập động.