Questa guida spiega come generare un token e i campi obbligatori e facoltativi per i token.
Per creare un token, devi comporre una stringa da firmare, che in questa guida chiamiamo valore firmato. Il valore firmato include parametri che descrivono i contenuti che stai proteggendo, la data di scadenza del valore firmato e così via.
Puoi utilizzare il valore firmato durante la creazione di una stringa token. Puoi creare una stringa token componendo i parametri per il token, ad esempio un codice HMAC (Hash-based Message Authentication Code) a chiave simmetrica del valore firmato.
Media CDN utilizza il token finale composto per contribuire a proteggere i tuoi contenuti.
Crea un token
Crea un valore firmato concatenando una stringa contenente i campi token obbligatori e i campi token facoltativi desiderati. Separa ogni campo e i parametri con una tilde
~
.Firma il valore firmato con una firma Ed25519 o con un HMAC a chiave simmetrica.
Componi il token concatenando una stringa contenente i campi del token obbligatori e quelli facoltativi. Separa ogni campo e i parametri con una tilde
~
.Quando scrivi il token, i valori di ciascun parametro sono gli stessi tra il valore con segno e la stringa token, con le seguenti eccezioni:
FullPath
Headers
Il seguente esempio di codice mostra come creare in modo programmatico un token:
Python
Per eseguire l'autenticazione su Media CDN, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Java
Per eseguire l'autenticazione su Media CDN, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Le seguenti sezioni descrivono i campi utilizzati dai token.
Campi token obbligatori
I seguenti campi sono obbligatori per ogni token:
Expires
- Uno dei seguenti valori:
PathGlobs
URLPrefix
FullPath
- Il valore sarà uno dei seguenti:
Signature
hmac
Se non diversamente specificato, i nomi dei parametri e i relativi valori sono sensibili alle maiuscole.
La tabella seguente spiega ogni parametro:
Nome / alias campo | Parametri token | Valore firmato |
---|---|---|
|
Secondi interi trascorsi dall'epoca di Unix (1970-01-01T00:00:00Z) | Expires=EXPIRATION_TIME , dopodiché il token non è più valido. |
|
Un elenco di massimo cinque segmenti di percorso a cui concedere l'accesso. I segmenti
possono essere delimitati da virgole (
I parametri del percorso, indicati con punti e virgola ( Per questi motivi, assicurati che l'URL non contenga i seguenti
caratteri speciali: |
PathGlobs=PATHS |
URLPrefix |
Un URL sicuro per il web con codifica Base64 che include il protocollo Ad esempio, alcuni valori URLPrefix per "https://example.com/foo/bar.ts" sono "https://example.com", "https://example.com/foo" e "https://example.com/foo/bar". |
URLPrefix=BASE_64_URL_PREFIX |
FullPath |
Nessuno. Quando specifichi FullPath in un token, non duplicare il percorso specificato nel valore firmato. In un token, includi il nome del campo senza = . |
FullPath=FULL_PATH_TO_OBJECT |
Signature |
Una versione della firma sicura per il web e con codifica Base64. | Non applicabile |
hmac |
Una versione sicura per il web con codifica Base64 del valore HMAC. | Non applicabile |
Sintassi con caratteri jolly PathGlobs
La tabella seguente spiega la sintassi dei caratteri jolly PathGlobs
.
Operatore | Corrisponde a | Esempi |
---|---|---|
* (asterisco) |
Corrisponde a zero o più caratteri nel percorso dell'URL, inclusi i caratteri della barra (/ ).
|
|
? (punto interrogativo) |
Corrisponde a un singolo carattere nel percorso dell'URL, escluse le barre (/ ).
|
/videos/s?main.m3u8 corrisponde a
/videos/s1main.m3u8 . Non corrisponde a /videos/s01main.m3u8 o /videos/s/main.m3u8 .
|
I globi devono iniziare con un asterisco (*
) o con una barra (/
)
per i percorsi dell'URL.
Poiché *
e /*
corrispondono a tutti i percorsi dell'URL, non ti consigliamo di utilizzare nessuno dei due nei token firmati. Per la massima protezione,
assicurati che i tuoi glob corrispondano ai contenuti a cui intendi concedere l'accesso.
Campi token facoltativi
Se non diversamente specificato, i nomi dei parametri e i relativi valori sono sensibili alle maiuscole.
La seguente tabella spiega i nomi dei parametri, gli eventuali alias e i dettagli dei parametri facoltativi:
Nome / alias campo | Parametri | Valore firmato |
---|---|---|
|
Secondi interi dall'epoca di Unix (1970-01-01T00:00:00Z) | Starts=START_TIME |
IPRanges |
Un elenco di massimo cinque indirizzi IPv4 e IPv6 in formato CIDR per i quali l'URL è valido in formato base64 sicuro per il web. Ad esempio,
per specificare gli intervalli IP "192.6.13.13/32,193.5.64.135/32", devi specificare
Potrebbe non essere utile includere gli intervalli IP nei token quando i client sono a rischio di migrazioni WAN o nei casi in cui il percorso di rete verso il frontend dell'applicazione sia diverso dal percorso di distribuzione.
Media CDN rifiuta i client con un codice Di seguito sono riportati i casi in cui Media CDN potrebbe rifiutare i client con un codice
Tutti questi fattori possono contribuire al fatto che un determinato client abbia un indirizzo IP non deterministico durante una sessione di riproduzione video. Se l'indirizzo IP del client cambia dopo che hai concesso l'accesso e il client tenta di scaricare un segmento video nel buffer di riproduzione, riceverà un |
IPRanges=BASE_64_IP_RANGES |
|
Una stringa arbitraria, utile per l'analisi dei log o il tracciamento della riproduzione. Per evitare di creare un token non valido, utilizza stringhe con codifica % o sicure per il web,
con codifica Base64. I seguenti caratteri non devono essere utilizzati per
|
SessionID=SESSION_ID_VALUE |
|
Una stringa arbitraria, utile per l'analisi dei log. Per evitare di creare un token non valido, utilizza stringhe con codifica % o sicure per il web,
con codifica Base64. I seguenti caratteri non devono essere utilizzati per
|
data=DATA_VALUE |
Headers |
Un elenco di nomi di campi di intestazione delimitato da virgole. I nomi delle intestazioni non fanno distinzione tra maiuscole e minuscole per le ricerche nella richiesta. I nomi delle intestazioni nei valori firmati sono sensibili alle maiuscole. Se manca un'intestazione, il valore è la stringa vuota. Se sono presenti più copie di un'intestazione, queste sono concatenate da virgole. | Headers=HEADER_1_NAME=HEADER_1_EXPECTED_VALUE,
HEADER_2_NAME=HEADER_2_EXPECTED_VALUE |
Esempi
Le sezioni seguenti mostrano esempi per la generazione di token.
Esempio utilizzando FullPath
Considera l'esempio seguente in cui viene utilizzato il campo FullPath
:
- Elemento richiesto:
http://example.com/tv/my-show/s01/e01/playlist.m3u8
- Data di scadenza: 160000000
Il valore firmato è:
Expires=160000000~FullPath=/tv/my-show/s01/e01/playlist.m3u8
Per creare un token, firma il valore firmato con una firma Ed25519 o con un HMAC a chiave simmetrica.
Di seguito sono riportati alcuni token di esempio creati da un valore firmato:
Firma Ed25519
Expires=160000000~FullPath~Signature=SIGNATURE_OF_SIGNED_VALUE
Dove SIGNATURE_OF_SIGNED_VALUE è la firma ED25519 del valore firmato in precedenza.
HMAC chiave simmetrica
Expires=160000000~FullPath~hmac=HMAC_OF_SIGNED_VALUE
Dove HMAC_OF_SIGNED_VALUE è l'HMAC della chiave simmetrica del valore firmato creato in precedenza.
Negli esempi precedenti, nel token è specificato FullPath
, ma il valore non viene ripetuto dal percorso specificato nel valore firmato. In questo modo puoi firmare il percorso completo della richiesta senza duplicare la richiesta nel token.
Esempio utilizzando URLPrefix
Considera l'esempio seguente in cui viene utilizzato il campo URLPrefix
:
- Elemento richiesto:
http://example.com/tv/my-show/s01/e01/playlist.m3u8
- Data di scadenza: 160000000
Il valore firmato è:
Expires=160000000~URLPrefix=aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4
Nell'esempio precedente, abbiamo sostituito il percorso dell'elemento richiesto, http://example.com/tv/my-show/s01/e01/playlist.m3u8
, con il percorso dell'elemento in formato Base64 sicuro per il web, aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4
.
Per creare un token, firma il valore firmato con una firma Ed25519 o con un HMAC a chiave simmetrica.
Di seguito sono riportati alcuni token di esempio creati da un valore firmato:
Firma Ed25519
Expires=160000000~URLPrefix=aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4~Signature=SIGNATURE_OF_SIGNED_VALUE
Dove SIGNATURE_OF_SIGNED_VALUE è la firma ED25519 del valore firmato in precedenza.
HMAC chiave simmetrica
Expires=160000000~URLPrefix=aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4~hmac=HMAC_OF_SIGNED_VALUE
Dove HMAC_OF_SIGNED_VALUE è l'HMAC della chiave simmetrica del valore firmato creato in precedenza.
Esempio utilizzando Headers
Considera l'esempio seguente in cui viene utilizzato il campo Headers
:
- Elemento richiesto:
http://example.com/tv/my-show/s01/e01/playlist.m3u8
- Data di scadenza: 160000000
- Valore PathGlobs:
*
- Intestazioni della richiesta previste:
user-agent: browser
accept: text/html
Il valore firmato è:
Expires=160000000~PathGlobs=*~Headers=user-agent=browser,accept=text/html
Per creare un token, firma il valore firmato con una firma Ed25519 o con un HMAC a chiave simmetrica.
Di seguito sono riportati alcuni token di esempio creati da un valore firmato:
Firma Ed25519
Expires=160000000~PathGlobs=*~Headers=user-agent,accept~Signature=SIGNATURE_OF_SIGNED_VALUE
Dove SIGNATURE_OF_SIGNED_VALUE è la firma ED25519 del valore firmato in precedenza.
HMAC chiave simmetrica
Expires=160000000~PathGlobs=*~Headers=user-agent,accept~hmac=HMAC_OF_SIGNED_VALUE
Dove HMAC_OF_SIGNED_VALUE è l'HMAC della chiave simmetrica del valore firmato creato in precedenza.
Negli esempi precedenti, nel token è specificato Headers=user-agent,accept
, ma i valori di intestazione previsti non vengono ripetuti dal valore firmato. In questo modo puoi firmare specifiche coppie chiave-valore di intestazione della richiesta senza duplicare i valori nel token.