Secciones de la documentaciónBuscar⌘K

DocumentaciónSeguridad

Enlaces firmados

Tu servidor decide quién puede ver y emite un enlace al stream con caducidad. dodocast solo comprueba la firma.

En esta página

Plan

Los enlaces firmados son para enlaces directos al stream y están disponibles en Pro y Business.

Clave de firma

  1. Ve a Settings → Signing keys → Create key.
  2. Guarda el secreto: se muestra una sola vez, al crear la clave. Trátalo como la contraseña de una base de datos y nunca lo envíes al navegador: firma solo en el servidor.
  3. La clave tiene un ID, sk_…, que va en la cabecera del token.
Claves de firmaClaves de firma
Settings → Signing keys

Una clave revocada deja de funcionar en menos de un minuto, igual que los enlaces firmados con ella.

Token

Un JWT estándar firmado con HS256:

json
header:  { "alg": "HS256", "typ": "JWT", "kid": "sk_tu_id_de_clave" }
payload: { "code": "abc123XYZ0", "iat": 1791676800, "exp": 1791678600 }
  • code es el código del video, lista de reproducción, emisión o canal. Un token para uno no abre otro.
  • iat y exp son obligatorios; la vida útil es de 24 horas como máximo.
  • Solo puedes firmar tu propio contenido.
  • Usa el secreto en la firma como cadena, exactamente como te lo dio la consola.
js
// Node.js, biblioteca jsonwebtoken
import jwt from 'jsonwebtoken'

const token = jwt.sign({ code: 'abc123XYZ0' }, process.env.DODOCAST_SECRET, {
  algorithm: 'HS256', keyid: 'sk_tu_id_de_clave', expiresIn: '30m',
})
const url = `https://stream.dodocast.com/s/${token}/hls/mp4/abc123XYZ0/master.m3u8`
python
# Python, biblioteca PyJWT
import time, jwt

now = int(time.time())
token = jwt.encode({"code": "abc123XYZ0", "iat": now, "exp": now + 1800},
                   SECRET, algorithm="HS256", headers={"kid": "sk_tu_id_de_clave"})
url = f"https://stream.dodocast.com/s/{token}/hls/mp4/abc123XYZ0/master.m3u8"

El Player SDK ya lo incluye: signToken(), signedStreamUrl(), signedPlaylistItemUrl() de @dodocast/player/server.

Dónde va el token

El token va en la ruta del enlace. El reproductor solicita por sí solo las variantes, los segmentos y la clave de cifrado con el mismo prefijo.

QuéRuta
Video/s/{jwt}/hls/mp4/{code}/master.m3u8
Emisión/s/{jwt}/live/mp4/{code}/index.m3u8
Canal/s/{jwt}/ch/mp4/{code}/index.m3u8
Lección de un curso (token para el código de la lista de reproducción)/public/pl/{code}/item/{itemCode}?t={jwt}
Cómo usar la claveCómo usar la clave
Código de ejemplo y URLs directamente en la consola

Si un enlace devuelve 403

  • firmaste contenido de otra persona: una clave solo sirve para el tuyo;
  • exp menos iat supera las 24 horas;
  • el token tiene un campo purpose: no debe tenerlo;
  • la clave fue revocada (o recreada: revisa kid);
  • el reloj de tu servidor va más de 5 minutos adelantado.

Actualizado:

    ↑ ↓ para elegir, Enter para abrir, Esc para cerrar