2015-01-06 14 views
5

Sto cercando di proteggere al meglio i video in formato HTTP Live Stream sul nostro CDN. Mi piacerebbe proteggere da hot linking, condivisione di URL, impedendo l'accesso a flussi che non sono ancora stati pubblicati.Protezione HLS con autenticazione token

Ogni video ha più bitrate in modo che i file HLS siano costituiti da un manifest m3u8 master che punta a diversi file di sub manifest che a loro volta puntano a file ts (transport stream). Questi file ts sono segmenti di 9 secondi di video mp4.

I file HLS sono archiviati sul nostro CDN e sono accessibili tramite HTTPS. Abbiamo l'autenticazione token abilitata sul CDN (Edgecast).

I video devono essere riprodotti in streaming da dietro un paywall e devono essere riproducibili in JWPlayer che non supporta la crittografia AES.

Quali sono le mie migliori opzioni? In questo momento sto generando al volo i file manifest di m3u8 e inserendo i token negli URL per i file .ts. In questo modo i file ts sono validi solo per 60 minuti? È più intelligente proteggere anche i file sub manifest con token?

C'è un modo migliore per proteggere il contenuto e avere ancora la possibilità di riprodurre in JWPlayer 6?

+0

Ciao, come sei riuscito a inserire token negli URL per i file m3u8 e .ts? – Dev

risposta

1

Ho avuto simile issue. Volevo proteggere (Autentica gli stream & Autorizza) HLS (playlist principale + file di segmento) memorizzati nel bucket S3. Questa è la mia soluzione:

  • ho creato VPC endpoint per il mio secchio che memorizza HLS privato flussi
  • Poi ho implementato proxy inverso e concesso l'accesso a questa S3 VPC endpoint

Così, ogni la richiesta fatta dal giocatore (per il file o i segmenti della playlist principale) passa attraverso il proxy. I giocatori devono impostare una coppia di intestazioni HTTP personalizzate (token di autenticazione, informazioni utente, ecc.). Quindi il proxy inverso sta eseguendo l'autenticazione & Autorizzazione contro la mia API utente. In base a questo risultato, il proxy inverso invia la richiesta a un determinato contenuto S3 o lo rifiuta.