Hemos analizado muchas formas diferentes de crear experiencias de transmisión en vivo con Amazon Interactive Video Service (Amazon IVS) aquí en este blog, pero hasta ahora todos esos ejemplos se han centrado en canales públicos que cualquier persona puede ver sin ninguna autorización de reproducción para Verifique que el espectador tenga permiso para ver la transmisión en vivo. Muchas plataformas de contenido generado por el usuario (UGC) de transmisión en vivo no requieren ninguna autorización para ver una transmisión, pero hay casos de uso en los que queremos limitar los espectadores de nuestra transmisión a un subconjunto de nuestra audiencia. Por ejemplo, tal vez nuestros creadores de contenido quieran cobrar una suscripción por el contenido que producen. O, tal vez, existen limitaciones de licencia para el contenido de transmisión que prohíben la distribución a ciertos datos demográficos o ubicaciones geográficas. Para abordar los casos de uso en los que la plataforma debe hacer cumplir la autorización de reproducción, Amazon IVS admite canales privados. Estos canales restringirán la reproducción a los espectadores que hayan obtenido un token firmado con una clave privada y verificado con una clave pública. En esta publicación, veremos cómo habilitar la autorización de reproducción, crear un par de claves de reproducción, generar un token y reproducir una transmisión privada. Creación de un canal privado El primer paso en este flujo de trabajo es crear un canal privado. La creación de un canal privado es muy similar a la creación de un canal público: la única diferencia es una configuración única al crear el canal para habilitar la autorización de reproducción. Podemos habilitar la autorización de reproducción a través de la , a través de la CLI de AWS o a través de cualquiera de los SDK de AWS. consola de Amazon IVS Comencemos por ver cómo crear un canal privado a través de Amazon IVS Console. En la lista de canales de la consola, haga clic en . Crear canal En la página , ingrese un nombre de canal (n.º 1), seleccione (n.º 2) y active (n.º 3). Crear canal Configuración personalizada Habilitar requisito de autorización de token para la reproducción de video Si prefiere usar la CLI para crear un canal, puede agregar la opción . --authorized $ aws ivs create-channel --name demo-private-channel --latency-mode LOW --type STANDARD --authorized En realidad, probablemente utilizará el SDK de AWS para crear los canales de sus usuarios. En este caso, puede consultar la documentación del SDK de AWS de su idioma favorito para determinar el argumento apropiado para establecer la reproducción . Por ejemplo, aquí están los para para AWS SDK para JavaScript v3 que indican que podemos establecer una propiedad booleana al crear un canal. authorized documentos CreateChannelCommandInput authorized Ahora que hemos habilitado la autorización de reproducción, si transmitiéramos al canal e intentáramos ver la reproducción en vivo sin generar y pasar un token de reproducción, recibiríamos un error de reproducción. Este es un ejemplo de reproducción con el SDK de reproductor de Amazon IVS donde hemos agregado un oyente para capturar los errores de reproducción. ERROR const streamUrl = '[private channel Playback Url]'; const ivsPlayer = IVSPlayer.create(); ivsPlayer.attachHTMLVideoElement(document.getElementById('video-player')); ivsPlayer.load(streamUrl); ivsPlayer.play(); ivsPlayer.addEventListener(IVSPlayer.PlayerEventType.ERROR, (err) => { console.log(err); }); Ejecutar esto en un navegador cuando se apunta a un canal privado dará como resultado el siguiente error registrado en la consola. { "type": "ErrorAuthorization", "code": 7, "source": "MasterPlaylist", "message": "invalid_playback_auth_token" } Esto confirma que nuestro canal es realmente privado y requiere que se genere un y se transmita junto con la para autorizar la reproducción. token URL de reproducción Creación de una tecla de reproducción Antes de que podamos generar un token de reproducción, necesitaremos crear un par de claves pública/privada y cargarlo en la consola de Amazon IVS. Este par de claves se usará para generar un token que se firma con la clave privada y se verifica con la clave pública para autorizar la reproducción. JWT Para administrar las teclas de reproducción con Amazon IVS Console, seleccione en la barra lateral de navegación izquierda. Teclas de reproducción Podemos crear una clave con la consola o manualmente con OpenSSL sin conexión en nuestra máquina local. Para crear un par de claves directamente en la consola. Para ello pulsa en . Crear clave de reproducción Asigne un nombre a la clave y haga clic en . Crear La clave pública de este par se guarda en su cuenta de AWS y se utilizará para verificar cualquier solicitud de reproducción que contenga un token firmado con la clave privada. Cuando se utiliza la consola de Amazon IVS para generar un par de claves, la clave privada se descarga inmediatamente en su máquina y . no se guarda en la consola ni está disponible para su posterior descarga Creación de un par de claves sin conexión Si prefiere crear su propio par de claves, puede hacerlo sin conexión y luego importar la clave pública a la consola de Amazon IVS. Este es un ejemplo de cómo crear un par de claves con OpenSSL. $ openssl ecparam -name secp384r1 -genkey -noout -out demo-private-channel-private-key-1.pem $ openssl ec -in demo-private-channel-private-key-1.pem -pubout -out demo-private-channel-public-key-1.pem Para importar la clave pública, haga clic en en la página de lista de . Importar claves de reproducción Asigne un nombre a la clave importada y busque el archivo de clave (o pegue el contenido del archivo de clave ). pública pública Esto también se puede hacer a través de la CLI de AWS: $ aws ivs \ import-playback-key-pair \ --name demo-private-channel-playback-key-1 \ --public-key-material "`cat /path/to/your/public-key.pem`" O a través del SDK de AWS ( para el ejemplo de JavaScript). documentos Reproducción de canales privados Ahora que hemos creado un canal privado y un par de claves de reproducción, estamos listos para generar tokens de autorización de reproducción firmados. En su aplicación, su lógica comercial dictará a qué usuarios se les debe otorgar un token de autorización. Como se mencionó anteriormente, tal vez la lógica de su aplicación primero verifique que el usuario sea un suscriptor válido del canal al consultar una base de datos. O, en el caso de las restricciones geográficas, tal vez deba buscar la dirección IP del espectador para asegurarse de que esté asociado con una región que pueda ver la transmisión. La implementación exacta variará, pero una vez que determine si el espectador está realmente autorizado para ver la transmisión, puede continuar con el método de generación de tokens que se describe a continuación. la generación de tokens diferirá según el idioma que esté utilizando en el backend. Consulte la para obtener detalles sobre los requisitos. Advertencia: guía del usuario Para generar un token con Node.js, podemos usar la biblioteca ( ). Esta biblioteca simplificará el proceso y nos permitirá firmar nuestra carga útil con el algoritmo de firma según lo exige Amazon IVS. Nuestra carga útil debe contener el , un para limitar la reproducción a un dominio específico (o para todos los dominios) y una marca de tiempo de vencimiento del token. Para firmar la carga útil, la formatearemos como se muestra a continuación y usaremos la clave privada que creamos e importamos anteriormente. jsonwebtoken docs SHA-384 ARN del canal access-control-origin * el token se usa para iniciar la reproducción en un canal privado, por lo que el período de vencimiento solo se aplica al tiempo entre la generación del token y el inicio de la reproducción. No se relaciona con la cantidad de tiempo que el usuario puede reproducir una secuencia determinada. Una vez que se autoriza la reproducción, puede continuar hasta que el usuario desconecte o vuelva a cargar la página web. Nota: Esta es una forma de generar un token en el backend (mediante un microservicio o una aplicación sin servidor) mediante Node.js. import jwt from "jsonwebtoken"; const getToken = () => { const privateChannelArn = process.env.DEMO_PRIVATE_CHANNEL_ARN; // private channel ARN const privateChannelPrivateKey = process.env.DEMO_PRIVATE_CHANNEL_PRIVATE_KEY; // playback private key const payload = { "aws:channel-arn": privateChannelArn, "aws:access-control-allow-origin": "*", "exp": Date.now() + (60 * 1000), // expires in 1 minute }; const token = jwt.sign(payload, privateChannelPrivateKey, { algorithm: 'ES384' }); return token; } En nuestra interfaz, podemos recuperar el token del backend y agregarlo a la del canal privado. En el siguiente ejemplo, he truncado la URL de reproducción ( ) por razones de brevedad. URL de reproducción streamUrl const streamUrl = `https://[truncated].m3u8?token=${token}` const ivsPlayer = IVSPlayer.create(); ivsPlayer.attachHTMLVideoElement(document.getElementById('video-player')); ivsPlayer.load(streamUrl); ivsPlayer.play(); Resumen En esta publicación, aprendimos cómo crear canales privados, crear e importar pares de claves de reproducción y generar un token JWT para la autorización de reproducción. Para obtener más información sobre los canales privados, consulte la . guía del usuario