En esta guía, se explica cómo generar un token, y los campos obligatorios y opcionales campos para tokens.
Para crear un token, redacta una cadena para firmar, a la que nos referimos como firma de salida en esta guía. El valor firmado incluye parámetros que describen el contenido que proteges, la fecha de vencimiento del valor firmado, etcétera.
Usas el valor firmado mientras creas una cadena de token. Para crear una cadena de token, debes componer los parámetros del token, como un código de autenticación de mensajes basado en hash (HMAC) de clave simétrica del valor firmado.
Media CDN usa el token compuesto final para ayudar a proteger tu contenido.
Crear un token
Crea un valor firmado mediante la concatenación de una cadena que contenga el campos de token obligatorios y el token opcional deseado campos de entrenamiento. Separa cada campo y cualquier parámetro con un carácter de virgulilla
~
.Firma el valor firmado con una firma Ed25519 o una clave simétrica HMAC
Para crear el token, concatena una cadena que contenga los campos de token obligatorios y opcionales. Separa cada campo y cualquier parámetro con un carácter virgulilla
~
.Cuando se compone el token, los valores de cada uno de los parámetros son los mismos entre el valor firmado y la cadena de token, con las siguientes excepciones:
FullPath
Headers
En la siguiente muestra de código, se indica cómo crear un token de manera programática:
Python
Para autenticarte en Media CDN, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Java
Para autenticarte en Media CDN, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
En las siguientes secciones, se describen los campos que usan los tokens.
Campos de token obligatorios
Los siguientes campos son obligatorios para cada token:
Expires
- Uno de los siguientes:
PathGlobs
URLPrefix
FullPath
- Una de las siguientes opciones:
Signature
hmac
A menos que se especifique lo contrario, los nombres de los parámetros y sus valores distinguen mayúsculas de minúsculas.
En la siguiente tabla, se explica cada parámetro:
Nombre y alias del campo | Parámetros de token | Valor con firma |
---|---|---|
|
Segundos de número entero que transcurrieron desde el tiempo Unix (1970-01-01T00:00:00Z) | Expires=EXPIRATION_TIME , después de lo cual se produce el
token ya no es válido. |
|
Una lista de hasta cinco segmentos de ruta de acceso a los que se debe otorgar acceso. Los segmentos
pueden estar delimitadas por comas (
No se permiten los parámetros de ruta de acceso, que se indican con punto y coma ( Por estos motivos, asegúrate de que tu URL no contenga los siguientes caracteres especiales: |
PathGlobs=PATHS |
URLPrefix |
Una URL codificada en base64 segura para la Web que incluya el protocolo Por ejemplo, algunos valores válidos de URLPrefix para `https://example.com/foo/bar.ts` son `https://example.com`, `https://example.com/foo` y `https://example.com/foo/bar`. |
URLPrefix=BASE_64_URL_PREFIX |
FullPath |
Ninguno Cuando especifiques FullPath en un token, no dupliques
la ruta que especificaste en el valor firmado. En un token, incluye el campo
sin un = . |
FullPath=FULL_PATH_TO_OBJECT |
Signature |
Una versión de la firma codificada en base64 segura para la Web. | No aplicable |
hmac |
Una versión del valor HMAC codificada en base64 segura para la Web. | No aplicable |
Sintaxis de comodines PathGlobs
En la siguiente tabla, se explica la sintaxis de comodines PathGlobs
.
Operador | Coincidencias | Ejemplos |
---|---|---|
* (asterisco) |
Coincide con cero o más caracteres en la ruta de acceso de la URL, incluidos los siguientes:
caracteres de barra diagonal (/ ).
|
|
? (signo de interrogación) |
Coincide con un solo carácter de
La ruta de la URL, sin incluir la barra diagonal (/ )
caracteres.
|
/videos/s?main.m3u8 coincidencias
/videos/s1main.m3u8 No coincide con /videos/s01main.m3u8 ni /videos/s/main.m3u8 .
|
Los signos glob deben comenzar con un asterisco (*
) o una barra diagonal (/
)
para las rutas de URL.
Debido a que *
y /*
coinciden con todas las rutas de URL, no te recomendamos
usando cualquiera de ellos en tus tokens firmados. Para obtener la máxima protección,
y asegúrate de que tus globs coincidan
con el contenido al que quieres otorgar acceso.
Campos de token opcionales
A menos que se especifique lo contrario, los nombres de los parámetros y sus valores distinguen mayúsculas de minúsculas.
La siguiente tabla explica los nombres de los parámetros, los alias y los detalles de parámetros opcionales:
Nombre y alias del campo | Parámetros | Valor con firma |
---|---|---|
|
Números enteros de segundos desde el tiempo Unix (1970-01-01T00:00:00Z) | Starts=START_TIME |
IPRanges |
Una lista de hasta cinco direcciones IPv4 e IPv6 en formato CIDR para
que esta URL es válida en formato Base64 seguro para la Web. Por ejemplo:
para especificar los rangos de IP “192.6.13.13/32,193.5.64.135/32”, deberás especificar
Puede no ser útil incluir IPRanges en los tokens cuando los clientes
en riesgo de migraciones de WAN o casos en los que la ruta de red a tu
frontend de la aplicación es diferente de la ruta de entrega.
Media CDN rechaza a los clientes con un código Los siguientes son casos que pueden provocar que Media CDN rechace a los clientes con un código
Todos estos factores pueden contribuir a que un cliente determinado tenga una dirección IP no determinista durante una sesión de reproducción de video. Si la dirección IP del cliente cambia después de que emites el acceso y el cliente intenta descargar un segmento de video en su búfer de reproducción, recibe un |
IPRanges=BASE_64_IP_RANGES |
|
Es una cadena arbitraria, útil para el análisis de registros o el seguimiento de reproducción. Para evitar crear un token no válido, usa cadenas codificadas en Base64 con codificación % o seguras para la Web. Los siguientes caracteres no deben usarse para
|
SessionID=SESSION_ID_VALUE |
|
Una cadena arbitraria, útil para el análisis de registros. Para evitar crear un token no válido, usa cadenas codificadas en Base64 con codificación % o seguras para la Web. Los siguientes caracteres no deben usarse para
|
data=DATA_VALUE |
Headers |
Una lista delimitada por comas de nombres de campos de encabezado. Los nombres de encabezado son no distingue mayúsculas de minúsculas para las búsquedas en la solicitud. Los nombres de los encabezados los valores distinguen mayúsculas de minúsculas. Si falta un encabezado, el valor es el campo una cadena vacía. Si hay varias copias de un encabezado, se usan y coma concatenadas. | Headers=HEADER_1_NAME=HEADER_1_EXPECTED_VALUE,
HEADER_2_NAME=HEADER_2_EXPECTED_VALUE |
Ejemplos
En las siguientes secciones, se muestran ejemplos de generación de tokens.
Ejemplo de uso de FullPath
Considera el siguiente ejemplo con el campo FullPath
:
- Elemento solicitado:
http://example.com/tv/my-show/s01/e01/playlist.m3u8
- Hora de vencimiento: 160000000
El valor con firma es el siguiente:
Expires=160000000~FullPath=/tv/my-show/s01/e01/playlist.m3u8
Para crear un token, firma el valor firmado con una firma Ed25519 o con una con clave simétrica o HMAC.
Los siguientes son ejemplos de tokens creados a partir de un valor firmado:
Firma Ed25519
Expires=160000000~FullPath~Signature=SIGNATURE_OF_SIGNED_VALUE
Donde SIGNATURE_OF_SIGNED_VALUE es la firma ED25519 del valor firmado y creado previamente.
HMAC de clave simétrica
Expires=160000000~FullPath~hmac=HMAC_OF_SIGNED_VALUE
Donde HMAC_OF_SIGNED_VALUE es la HMAC de clave simétrica del objeto firmado valor creado previamente.
En los ejemplos anteriores, se proporciona FullPath
en el token, pero el valor
no se repita desde la ruta especificada en el valor firmado. Esto te permite
firmar la ruta de acceso completa de la solicitud sin duplicar la solicitud en el token.
Ejemplo de uso de URLPrefix
Considera el siguiente ejemplo con el campo URLPrefix
:
- Elemento solicitado:
http://example.com/tv/my-show/s01/e01/playlist.m3u8
- Hora de vencimiento: 160000000
El valor con firma es el siguiente:
Expires=160000000~URLPrefix=aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4
En el ejemplo anterior, reemplazamos la ruta al elemento solicitado,
http://example.com/tv/my-show/s01/e01/playlist.m3u8
por la ruta de acceso al elemento
en formato Base64 seguro para la Web
aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4
Para crear un token, firma el valor firmado con una firma Ed25519 o con una con clave simétrica o HMAC.
Los siguientes son ejemplos de tokens creados a partir de un valor firmado:
Firma Ed25519
Expires=160000000~URLPrefix=aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4~Signature=SIGNATURE_OF_SIGNED_VALUE
Donde SIGNATURE_OF_SIGNED_VALUE es la firma ED25519 del valor firmado y creado previamente.
HMAC de clave simétrica
Expires=160000000~URLPrefix=aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4~hmac=HMAC_OF_SIGNED_VALUE
Donde HMAC_OF_SIGNED_VALUE es la HMAC de clave simétrica del objeto firmado valor creado previamente.
Ejemplo de uso de Headers
Considera el siguiente ejemplo con el campo Headers
:
- Elemento solicitado:
http://example.com/tv/my-show/s01/e01/playlist.m3u8
- Hora de vencimiento: 160000000
- Valor de PathGlobs:
*
- Encabezados de solicitud esperados:
user-agent: browser
accept: text/html
El valor con firma es el siguiente:
Expires=160000000~PathGlobs=*~Headers=user-agent=browser,accept=text/html
Para crear un token, firma el valor firmado con una firma Ed25519 o con una con clave simétrica o HMAC.
Los siguientes son ejemplos de tokens creados a partir de un valor firmado:
Firma Ed25519
Expires=160000000~PathGlobs=*~Headers=user-agent,accept~Signature=SIGNATURE_OF_SIGNED_VALUE
Donde SIGNATURE_OF_SIGNED_VALUE es la firma ED25519 del valor firmado y creado previamente.
HMAC de clave simétrica
Expires=160000000~PathGlobs=*~Headers=user-agent,accept~hmac=HMAC_OF_SIGNED_VALUE
Donde HMAC_OF_SIGNED_VALUE es la HMAC de clave simétrica del objeto firmado valor creado previamente.
En los ejemplos anteriores, se proporciona Headers=user-agent,accept
en el token.
pero los valores de encabezado esperados no se repiten a partir del valor firmado. Esto te permite firmar pares clave-valor específicos del encabezado de la solicitud sin duplicar los valores en el token.