Questa guida spiega come generare un token e i componenti obbligatori e facoltativi per i token.
Per creare un token, scrivi una stringa da firmare, che definiamo un predefinito in questa guida. Il valore con segno include i parametri che descrivono i contenuti che stai proteggendo, la data di scadenza del valore firmato e così via e quindi la tua.
Puoi utilizzare il valore firmato durante la creazione di una stringa token. Creerai un la stringa token componendo i parametri per il token, come un codice HMAC (Simmetric-Key Hash-based Message Authentication Code) del valore.
Media CDN utilizza il token finale composto per proteggere meglio contenuti.
Crea un token
Crea un valore firmato concatenando una stringa che contiene il valore campi token obbligatori e token facoltativo desiderato campi. Separa ogni campo e i parametri con una tilde
~
.Firma il valore firmato con una firma Ed25519 o con una chiave simmetrica. HMAC.
Componi il token concatenando una stringa che contiene i valori richiesti campi token e campi token facoltativi. Separa ogni campo e qualsiasi con una tilde
~
.Quando scrivi il token, i valori di ciascuno dei parametri sono la stessa tra il valore firmato e la stringa token, con il seguente 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 ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Java
Per eseguire l'autenticazione su Media CDN, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura 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 parametro
non è più valido. |
|
Un elenco di massimo cinque segmenti di percorso a cui concedere l'accesso. I segmenti
può essere delimitato da virgole (
I parametri del percorso, indicati con il punto e virgola ( Per questi motivi, assicurati che l'URL non contenga quanto segue
caratteri speciali: |
PathGlobs=PATHS |
URLPrefix |
Un URL sicuro per il web con codifica Base64 che include il protocollo
Ad esempio, alcuni valori URLPrefix "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 campo
nome 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, tra cui
barra (/ ).
|
|
? (punto interrogativo) |
Corrisponde a un singolo carattere in
il percorso dell'URL, esclusa la barra (/ )
caratteri.
|
/videos/s?main.m3u8 corrispondenze
/videos/s1main.m3u8 . Non corrisponde a nessuna delle due opzioni
/videos/s01main.m3u8 o /videos/s/main.m3u8 .
|
I globi devono iniziare con un asterisco (*
) o con una barra (/
)
per i percorsi degli URL.
Poiché *
e /*
corrispondono a tutti i percorsi dell'URL, è sconsigliato
utilizzando uno dei tuoi 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 illustra i nomi dei parametri, gli eventuali alias e i dettagli relativi 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
che 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", devi specificare
Potrebbe non essere utile includere gli intervalli IP nei token quando i client
a rischio di migrazioni WAN o di casi in cui il percorso di rete
il frontend dell'applicazione è diverso
dal percorso di distribuzione.
Media CDN rifiuta i client con un Di seguito sono riportati i casi che potrebbero causare la presenza di Media CDN
rifiuto dei clienti con un codice
Tutti questi fattori possono contribuire al fatto che un determinato cliente
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
buffer, ricevono un valore |
IPRanges=BASE_64_IP_RANGES |
|
Una stringa arbitraria, utile per l'analisi o la riproduzione dei log. di tracciamento. Per evitare di creare un token non valido, utilizza la codifica % o sicura per il web
stringhe 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 la codifica % o sicura per il web
stringhe 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 sono senza distinzione tra maiuscole e minuscole per le ricerche nella richiesta. Nomi delle intestazioni nella ai valori fanno distinzione tra maiuscole e minuscole. Se manca un'intestazione, il valore è vuoto stringa. Se sono presenti più copie di un'intestazione, verranno 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 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 della valore firmato creato in precedenza.
HMAC chiave simmetrica
Expires=160000000~FullPath~hmac=HMAC_OF_SIGNED_VALUE
Dove HMAC_OF_SIGNED_VALUE è l'HMAC a chiave simmetrica del token firmato creato in precedenza.
Negli esempi precedenti, nel token è specificato FullPath
, ma il valore
non viene ripetuto dal percorso specificato nel valore firmato. Questo consente di
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 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 della valore firmato creato in precedenza.
HMAC chiave simmetrica
Expires=160000000~URLPrefix=aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4~hmac=HMAC_OF_SIGNED_VALUE
Dove HMAC_OF_SIGNED_VALUE è l'HMAC a chiave simmetrica del token 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 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 della valore firmato creato in precedenza.
HMAC chiave simmetrica
Expires=160000000~PathGlobs=*~Headers=user-agent,accept~hmac=HMAC_OF_SIGNED_VALUE
Dove HMAC_OF_SIGNED_VALUE è l'HMAC a chiave simmetrica del token 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 con segno. Ciò consente
Firma coppie chiave-valore specifiche per l'intestazione della richiesta senza duplicare i valori
nel token.