Una richiesta di stream registra una sessione per un evento in live streaming. Per maggiori dettagli, vedi Effettuare una richiesta di streaming.
Questa pagina illustra l'utilizzo del token HMAC per autenticare le richieste di streaming.
Prima di iniziare
Prima di continuare, completa queste operazioni:
- Completa i prerequisiti.
- Nel tuo account Google Ad Manager, attiva Stream create authentication keys per il tuo evento di live streaming. Se utilizzi l'autenticazione con token, la chiave è obbligatoria.
Generare un token HMAC
Per generare un token:
- Raccogli la chiave asset e l'ora di scadenza del live streaming. Per saperne di più, consulta Attivare l'autenticazione per le richieste di creazione di sessioni di streaming DAI.
Ordina i seguenti parametri in ordine alfabetico e separali con il carattere tilde
~:event=ASSET_KEY~exp=EXPIRATIONSostituisci quanto segue:
ASSET_KEY: obbligatorio. La chiave asset dell'evento di live streaming.EXPIRATION: obbligatorio. Il timestamp di scadenza del token in formato Unix epoch.
Calcola un hash SHA-256 della stringa del token utilizzando la chiave di autenticazione DAI.
Formatta l'output dell'hash in formato esadecimale.
Per firmare la stringa del token, aggiungi la firma alla fine dei parametri raccolti in precedenza:
event=...~hmac=HMAC_SIGNATURESostituisci
HMAC_SIGNATUREcon la firma che hai generato eseguendo l'hashing della stringa del token utilizzando la chiave di autenticazione DAI.Per trasmettere in modo sicuro la stringa del token firmato, applica la codifica URL alla stringa del token firmato.
Il seguente esempio firma e codifica una stringa di token che scade entro 60 secondi:
# Add 60 seconds to the current time
future_epoch=$((EPOCHSECONDS + 60))
echo "Current: $EPOCHSECONDS"
echo "Future: $future_epoch"
# Current: 1767389133
# Future: 1767389193
# Sample DAI stream authentication key
key="DE0E9..."
# Sort parameters in the token string
token="event=YRB0Bl0oQRCb5J-maPpJUQ~exp=1767389193"
# Generate the token's signature.
echo -n $token | openssl dgst -sha256 -mac HMAC -macopt key:$key
# SHA2-256(stdin)= 9935a013957e5ce893a7ee444d3d452fd0de7d273ff8b65471ddd4619b80d248
# Sign the token: event=YRB0Bl0oQRCb5J-maPpJUQ~exp=1767389193~hmac=9935a013957e5ce893a7ee444d3d452fd0de7d273ff8b65471ddd4619b80d248
# Encode the token: event%3DYRB0Bl0oQRCb5J%2DmaPpJUQ%7Eexp%3D1767389193%7Ehmac%3D9935a013957e5ce893a7ee444d3d452fd0de7d273ff8b65471ddd4619b80d248
Utilizzare il token HMAC per richiedere una sessione di live streaming
Per autenticare la richiesta di creazione dello stream con un token HMAC, esegui una delle seguenti operazioni:
Intestazione della richiesta Authorization
curl "https://dai.google.com/linear/v1/hls/event/YRB0Bl0oQRCb5J-maPpJUQ/stream" \
-X POST \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Authorization: DCLKDAI token=event%3DYRB0Bl0oQRCb5J%2DmaPpJUQ%7Eexp%3D1767389193%7Ehmac%3D9935a013957e5ce893a7ee444d3d452fd0de7d273ff8b65471ddd4619b80d248"
Parametro stringa di query
curl "https://dai.google.com/linear/v1/hls/event/YRB0Bl0oQRCb5J-maPpJUQ/stream?auth-token=event%3DYRB0Bl0oQRCb5J%2DmaPpJUQ%7Eexp%3D1767389193%7Ehmac%3D9935a013957e5ce893a7ee444d3d452fd0de7d273ff8b65471ddd4619b80d248" \
-X POST \
-H "Content-Type: application/x-www-form-urlencoded"
Campo di dati del modulo
curl "https://dai.google.com/linear/v1/hls/event/YRB0Bl0oQRCb5J-maPpJUQ/stream" \
-X POST \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "auth-token=event%3DYRB0Bl0oQRCb5J%2DmaPpJUQ%7Eexp%3D1767389193%7Ehmac%3D9935a013957e5ce893a7ee444d3d452fd0de7d273ff8b65471ddd4619b80d248"
In caso di esito positivo, viene visualizzata la seguente risposta JSON:
{
"hls_master_playlist": "https://dai.google.com/linear/hls/pa/event/YRB0Bl0oQRCb5J-maPpJUQ/stream/e91f907e-6a0a-4795-8c96-c8e36e89cbf6:DLS/master.m3u8",
"media_verification_url": "https://dai.google.com/view/p/service/linear/stream/e91f907e-6a0a-4795-8c96-c8e36e89cbf6:DLS/loc/DLS/network/21775744923/event/YRB0Bl0oQRCb5J-maPpJUQ/media/",
"metadata_url": "https://dai.google.com/linear/v1/pa/event/YRB0Bl0oQRCb5J-maPpJUQ/stream/e91f907e-6a0a-4795-8c96-c8e36e89cbf6:DLS/metadata",
"polling_frequency": 10,
"session_update_url": "https://dai.google.com/linear/v1/pa/event/YRB0Bl0oQRCb5J-maPpJUQ/stream/e91f907e-6a0a-4795-8c96-c8e36e89cbf6:DLS/session",
"stream_id": "e91f907e-6a0a-4795-8c96-c8e36e89cbf6:DLS",
"stream_manifest": "https://dai.google.com/linear/hls/pa/event/YRB0Bl0oQRCb5J-maPpJUQ/stream/e91f907e-6a0a-4795-8c96-c8e36e89cbf6:DLS/master.m3u8"
}
Per comprendere la struttura della risposta e i codici di stato, consulta Metodo: stream. Se l'autenticazione non va a buon fine, viene visualizzato il seguente errore:
<!DOCTYPE html>
<html lang=en>
<meta charset=utf-8>
<meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
<title>Error 401 (Unauthorized)!!1</title>
...
<a href=//www.google.com/><span id=logo aria-label=Google></span></a>
<p><b>401.</b> <ins>That’s an error.</ins>
<p><ins>That’s all we know.</ins>