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, indicata come valore firmato in questa guida. Il valore firmato include parametri che descrivono i contenuti che stai proteggendo, la data e l'ora di scadenza del valore firmato e così via.
Utilizza il valore firmato durante la creazione di una stringa di token. Puoi creare una stringa di token componendo i parametri per il token, ad esempio un codice HMAC (Hash-based Message Authentication Code) con chiave simmetrica del valore firmato.
Media CDN utilizza il token composto finale per proteggere i tuoi contenuti.
Crea un token
Crea un valore firmato concatenando una stringa contenente i campi obbligatori del token e i campi facoltativi del token che ti interessano. Separa ogni campo e tutti i parametri con un carattere tilde
~
.Firma il valore firmato con una firma Ed25519 o un HMAC con chiave simmetrica.
Componi il token concatenando una stringa contenente i campi obbligatori e facoltativi del token. Separa ogni campo e eventuali parametri con il carattere tilde
~
.Quando componi il token, i valori di ciascun parametro sono uguali tra il valore firmato e la stringa del token, con le seguenti eccezioni:
FullPath
Headers
Il seguente esempio di codice mostra come creare un token in modo programmatico:
Python
Per autenticarti a Media CDN, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Java
Per autenticarti a Media CDN, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Le sezioni seguenti descrivono i campi utilizzati dai token.
Campi token obbligatori
I seguenti campi sono obbligatori per ogni token:
Expires
- Uno dei seguenti:
PathGlobs
URLPrefix
FullPath
- Uno dei seguenti:
Signature
hmac
Se non diversamente specificato, i nomi dei parametri e i relativi valori sono sensibili alle maiuscole.
La tabella seguente illustra ciascun parametro:
Nome campo / alias | 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 di percorso, indicati mediante punti e virgola ( Per questi motivi, assicurati che l'URL non contenga i seguenti caratteri speciali: |
PathGlobs=PATHS |
URLPrefix |
Un URL con codifica base64 sicuro per il web che include il protocollo
Ad esempio, alcuni valori validi di 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 con codifica Base64 sicura per il web. | Non applicabile |
hmac |
Una versione con codifica Base64 sicura per il web del valore HMAC. | Non applicabile |
Sintassi dei caratteri jolly PathGlobs
La tabella seguente illustra la sintassi del carattere jolly PathGlobs
.
Operatore | Corrisponde a | Esempi |
---|---|---|
* (asterisco) |
Corrisponde a zero o più caratteri nel percorso dell'URL, inclusi
i caratteri barra (/ ).
|
|
? (punto interrogativo) |
Corrisponde a un singolo carattere nel
percorso dell'URL, esclusi i caratteri barra (/ ).
|
/videos/s?main.m3u8 corrispondenze
/videos/s1main.m3u8 . Non corrisponde a /videos/s01main.m3u8 o /videos/s/main.m3u8 .
|
I glob devono iniziare con un asterisco (*
) o una barra (/
) per i percorsi URL.
Poiché *
e /*
corrispondono a tutti i percorsi degli URL, non consigliamo di utilizzarli nei token firmati. Per la massima protezione, assicurati che i 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 tabella seguente spiega i nomi dei parametri, eventuali alias e dettagli per i parametri facoltativi:
Nome campo / alias | Parametri | Valore firmato |
---|---|---|
|
Secondi interi dall'epoca 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 questo 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", specifica
Gli intervalli IP potrebbero non essere utili da includere nei token quando i client sono esposti al rischio di migrazioni WAN o nei casi in cui il percorso di rete al frontend dell'applicazione è diverso dal percorso di importazione.
Media CDN rifiuta i client con un codice Di seguito sono riportati i casi in cui Media CDN potrebbe rifiutare i clienti con un codice
Tutti questi fattori possono contribuire a far sì che un determinato client abbia un
indirizzo IP non deterministico durante una sessione di riproduzione di un video. Se l'indirizzo IP del cliente cambia dopo che hai concesso l'accesso e il cliente tenta di scaricare un segmento di video nel proprio buffer di riproduzione, riceve un messaggio |
IPRanges=BASE_64_IP_RANGES |
|
Una stringa arbitraria, utile per l'analisi dei log o per il monitoraggio della riproduzione. Per evitare di creare un token non valido, utilizza stringhe codificate in base64 con codifica percentuale o sicure per il web. 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 codificate in base64 con codifica percentuale o sicure per il web. I seguenti caratteri non devono essere utilizzati per
|
data=DATA_VALUE |
Headers |
Un elenco separato da virgole di nomi di campi di intestazione. 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 un'intestazione non è presente, il valore è la stringa vuota. Se sono presenti più copie di un'intestazione, queste vengono concatenate con virgole. | Headers=HEADER_1_NAME=HEADER_1_EXPECTED_VALUE,
HEADER_2_NAME=HEADER_2_EXPECTED_VALUE |
Esempi
Le sezioni seguenti mostrano esempi di generazione di token.
Esempio di utilizzo di FullPath
Considera l'esempio seguente che utilizza il campo FullPath
:
- Articolo richiesto:
http://example.com/tv/my-show/s01/e01/playlist.m3u8
- Data e ora 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 con chiave simmetrica.
Di seguito sono riportati alcuni esempi di token 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 creato in precedenza.
HMAC con chiave simmetrica
Expires=160000000~FullPath~hmac=HMAC_OF_SIGNED_VALUE
dove HMAC_OF_SIGNED_VALUE è l'HMAC con chiave simmetrica del valore firmato creato in precedenza.
Negli esempi precedenti, FullPath
viene fornito nel token, ma il valore
non viene ripetuto dal percorso specificato nel valore firmato. In questo modo, puoi firmare il percorso completo della richiesta senza duplicarla nel token.
Esempio di utilizzo di URLPrefix
Considera l'esempio seguente che utilizza il campo URLPrefix
:
- Articolo richiesto:
http://example.com/tv/my-show/s01/e01/playlist.m3u8
- Data e ora 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 con chiave simmetrica.
Di seguito sono riportati alcuni esempi di token 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 creato in precedenza.
HMAC con chiave simmetrica
Expires=160000000~URLPrefix=aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4~hmac=HMAC_OF_SIGNED_VALUE
dove HMAC_OF_SIGNED_VALUE è l'HMAC con chiave simmetrica del valore firmato creato in precedenza.
Esempio di utilizzo di Headers
Considera l'esempio seguente che utilizza il campo Headers
:
- Articolo richiesto:
http://example.com/tv/my-show/s01/e01/playlist.m3u8
- Data e ora di scadenza: 160000000
- Valore PathGlobs:
*
- Intestazioni delle richieste 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 con chiave simmetrica.
Di seguito sono riportati alcuni esempi di token 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 creato in precedenza.
HMAC con chiave simmetrica
Expires=160000000~PathGlobs=*~Headers=user-agent,accept~hmac=HMAC_OF_SIGNED_VALUE
dove HMAC_OF_SIGNED_VALUE è l'HMAC con chiave simmetrica del valore firmato creato in precedenza.
Negli esempi precedenti, Headers=user-agent,accept
viene fornito nel token, ma i valori dell'intestazione previsti non vengono ripetuti dal valore firmato. In questo modo puoi firmare coppie chiave-valore specifiche dell'intestazione della richiesta senza duplicare i valori nel token.