Usando un script generador de URLs con tokens, con la extensión StreamClip.
soporte, ws.webtv, inicio, contenidos, clips, streamclip, crear, editar, tokens
Algunos clientes pueden necesitar utilizar URLs con tokens para restringir el acceso a los archivos/streams. Esto normalmente implica generar una URL única por usuario (autorizado) mediante la adición de un token a la URL original de un archivo o stream. Para permitir esto, hemos implementado una manera sencilla para que la WebTV obtenga la URL con token, para un Usuario en particular, a través de un script generador de tokens externo.
¿Cómo funciona?
1. Ud. desarrolla un script que genera el(los) token(s) requerido(s) para una URL suministrada, genérica. Por ejemplo:
- URL suministrada -genérica-: http://www.mymediaserver.com/myfile.mp4
-
URL con token: http://www.mymediaserver.com/myfile.mp4?token=uniquetoken
2. Ud. configura la WebTV para usar el script generador de tokens (suministrando la URL del script así como una clave secreta).
3. Cuando especifique la URL de los archivos/streams (en la pestaña "Medios" de un StreamClip)
deberá añadir el prefijo [xtok] a la URL genérica.
4. Al momento de reproducir, si el reproductor de vídeo de la WebTV encuentra el prefijo antes mencionado en una URL, entonces solicitará la URL con token antes de reproducirla.
¿Cómo obtiene los detalles el script generador de tokens?
La WebTV, en caso de que un Usuario está autorizado para acceder a un contenido, enviará la información requerida al script generador de tokens (URL genérica, ID del Usuario e IP del Usuario) como variables GET (que serán añadidas a la URL del script generador de tokens). La información también incluirá una firma (hash). Más información a continuación.
Descargue un código de ejemplo en PHP:
Ejemplo de script generador de tokens
La WebTV añadirá los detalles de la solicitud a la URL del script generador de tokens, como variables GET. Ejemplo:
http://.../script_generador_de_tokens_externo.php?user_id={id_del_usuario}&user_ip={ip_del_usuario}&url={url_genérica_que_necesita_token}&signature={firma}
• user_id -> ID del User (en la WebTV)
• user_ip -> IP detectada del Usuario
• url -> URL genérica que requiere el(los) token(s)
• signature -> Una firma (hash) para validar la solicitud. La firma es generada con la clave de firma (key) introducida en la configuración de la WebTV, usando HMAC SHA256.
Validando la solicitud
Antes de generar el(los) token(s), debe verificar la solicitud usando la firma. Para ello, debe generar la firma de la misma manera que lo hace la WebTV, y compararla con la firma recibida.
Ejemplo en PHP:
$key = "la clave secreta";
$data = array(
"user_id" => (int)$user_id,
"user_ip" => $user_ip,
"url" => $url
);
$signature = base64_encode(hash_hmac('sha256', json_encode($data), $key, true));
Una vez que ha generado la firma, debe compararla con la firma enviada por la WebTV: Si coinciden, puede continuar.
Cuando realice pruebas durante el desarrollo... si las firmas no coinciden (y está seguro de que los datos no han sido alterados), asegúrese de que las claves utilizadas para generar los hashes (en el script y en la WebTV) son los mismos. Si son iguales, verifique que los datos recibidos están siendo urldecoded y que está generando la firma de la misma manera como se explica en el ejemplo anterior.
Una vez que ha generado la URL con token(s) debe retornar el resultado como un arreglo en formato JSON.
Índices del arreglo requeridos por la WebTV
• error -> (opcional) Sólo si ocurrió un error durante el procesado.
• url -> La URL resultante, con token(s).
Ejemplos en PHP:
-Éxito-
echo json_encode( array(
"url" => "http://mymediaserver.com/whatever_folder/myfile.mp4?token=uniquetoken"
));
-Error-
echo json_encode( array(
"error" => "An error message..."
));
Como explicamos anteriormente, esto implica suministrar la URL del script así como una clave de firma secreta a la WebTV.
Edite el archivo de configuración de la WebTV (config/Config.inc.php) y añada las siguientes variables antes del tag de cierre de PHP (?>):
$EXTERNAL_URL_TOKENIZER_URL = "http://mydomain.com/my_url_tokenizer.php"; // La URL del script generador de tokens
$EXTERNAL_URL_TOKENIZER_KEY = "mysecretkey"; // Esta clave será utilizada para generar la firma/hash de verificación. Debe coincidir con la clave utilizada en el script generador de tokens.
A estas alturas, debe estar familiarizado con la creación/edición de StreamClips. Si no fuera así, por favor, lea los tutoriales "StreamClip VOD" y "StreamClip Live" antes de continuar leyendo.
(Pestaña "Medios")
Simplemente añada el prefijo [xtok] a la URL genérica de los archivos/streams, en los campos correspondientes. Ejemplos:
RTMP: [xtok]rtmp://mymediaserver.com/vod/myfile.mp4
HTTP: [xtok]http://mymediaserver.com/vod/myfile.mp4
HLS: [xtok]http://mymediaserver.com:1935/vod/myfile.mp4/playlist.m3u8
RTSP (Live): [xtok]rtsp://mymediaserver.com/vod/myfile.mp4
Se realiza introduciendo las fórmulas URL Base correspondientes en Configuración > Vídeo
Fórmula Flash
La Fórmula URL que debe introducir en la calidad correspondiente (campo Flash) sería como la siguiente:
[xtok]rtmp://mymediaserver.com/whatever_folder/{filename.ext}
Tenga en cuenta el texto "[xtok]" al comienzo de la fórmula.
Fórmula HTML5
La Fórmula URL que debe introducir en la calidad correspondiente (campo HTML5) sería como la siguiente:
[xtok]https://mymediaserver.com/whatever_folder/{filename.ext}
Tenga en cuenta el texto "[xtok]" al comienzo de la fórmula.
Para WS.WebTV versión 2.0 y posteriores
Cuando habilita el menú "Descargar" para un Clip, y ha elegido la opción "Sí, Archivos WebTV" o "Sí, Archivos WebTV + Otros Archivos", y los campos HTML5 de las calidades referencian archivos .mp4 el sistema generará automáticamente las URLs de descarga (con tokens) correspondientes para esos archivos. No obstante lo anterior si, en caso de que en el menú "Descargar" de un Clip, desea suministrar enlaces a archivos que son diferentes de los referenciados en los campos HTML5 de las calidades, y dichos archivos también requieren URLs con tokens entonces siga los pasos 1 y 2 de la siguiente sección.
Para versiones de WS.WebTV anteriores a 2.0
Si piensa habilitar la opción de descarga de vídeo para un Clip y desea suministrar una URL (privada) a un archivo -para que sólo se pueda descargar por usuarios autorizados-, entonces necesita utilizar una URL especial generada por la WebTV, la cual se encargará de generar la URL con token(s) para que los usuarios autorizados puedan descargar el archivo.
Para habilitar el menú de "Descarga" para un Clip y user URLs privadas de CloudFront URLs, siga los siguientes pasos:
1. En "Mostrar Menú de Descarga:", seleccione "Sí, Otros Archivos".
2. Introduzca los enlaces de descarga manualmente: Los enlaces de descarga deben ser generados usando la utilidad WebTV Tokenizer URL generator de la WebTV. Para ejecutar la utilidad abra la siguiente URL en un navegador Web (reemplace la URL de su WebTV):
http://<url_de_su_webtv>/index.php?go=ajax&do=genxtokenizerurl y suministre la URL genérica al archivo correspondiente. Por ejemplo:
La siguiente URL:
http://mymediaserver.com/whatever_folder/myvideo.mp4
Será transformada (por la utilidad) en una URL similar a la siguiente:
http://<url_de_su_webtv>/index.php?go=ajax&do=getxtokenizedurl&iq=,http%3A%2F%2Fmymediaserver.com%2Fwhatever_folder%2Fmyvideo.mp4&tp=download
La URL transformada será la que deberá introducir en el campo "Otros Archivos".