El token firmado que autoriza cada acceso al data plane, quién lo emite, quién lo verifica y qué obliga.
Implementado. La especificación normativa del formato es
protocols/capability-token/SCT_SPEC.md; el diseño está endec-0117§4.1.
El daemon tiene a la vez acceso a los ficheros y a la red. Por eso ninguna operación suya se autoriza con algo que el cliente pueda adivinar o reutilizar. El identificador de sesión deja de ser un secreto: es sólo un identificador. Lo que autoriza es una Styx Capability Token (SCT).
Las únicas operaciones del daemon sin capacidad son el apretón de manos QUIC/TLS y /health.
Leer, suscribirse, hacer fetch, publicar o ingestar exigen una SCT válida.
| Paso | Quién | Qué |
|---|---|---|
| Decidir | playback-svc | Resuelve quién es el actor y si puede leer, publicar o subir; abre la sesión en el daemon |
| Ligar la sesión | daemon, por el socket de control | Guarda la sesión con su actor y su recurso (sólo playback-svc puede crearla) |
| Firmar | playback-svc | Ed25519 con una clave privada que sólo tiene este servicio |
| Presentar | cliente | La lleva en el parámetro de autorización (MoQT), en cap= (WebTransport y HTTP/3 desde el navegador) o en Authorization (clientes nativos) |
| Verificar | daemon, con el verificador de spire | Una sola implementación por lenguaje; el daemon sólo tiene claves públicas |
La clave pública se identifica con un kid; el daemon acepta la actual y la siguiente, para poder
rotar sin cortar sesiones.
No es un JWT. Es un formato binario versionado y de longitud fija por versión, en base64url, para
evitar el análisis de JSON y la negociación de algoritmo en el data plane. Lleva versión, kid,
audiencia (el nodo daemon), identificador de sesión, un hash del actor, el recurso (un asset o un
espacio de nombres MoQT), el alcance, una restricción opcional de rango de bytes o de pistas, el
intervalo de validez y un jti.
Alcances (scope): read, publish, ingest y control. Escribir exige un alcance de
escritura y un recurso concreto; los alcances de publish e ingest son de un solo uso por
jti al abrir el flujo. La vida de un token de lectura es corta y se renueva por el canal de
control del cliente.
cap= se redacta.La subida de ficheros añade una dirección de datos nueva: el cliente sube directamente al daemon
con una SCT de alcance ingest. playback-svc decide quién sube y firma la capacidad; el daemon
sirve el protocolo de ingesta de conduit, verifica cada petición con el mismo
verificador y escribe en una zona de preparación relativa al descriptor de la raíz de ingesta.
Cuotas por fichero y por actor, y alta en el catálogo por el bus. Detalle en
subir ficheros.
dec-0126 (PROPOSED) propone un alcance adicional para anotar metadatos dentro de un fichero ya
existente. Hasta su lock no forma parte de este contrato.