Autenticar solicitações de sessão de stream

Uma solicitação de stream registra uma sessão para um evento de transmissão ao vivo. Para mais detalhes, consulte Fazer uma solicitação de stream.

Esta página aborda o uso do token HMAC para autenticar as solicitações de stream.

Antes de começar

Antes de continuar, faça o seguinte:

  • Concluir os pré-requisitos.
  • Na sua conta do Google Ad Manager, ative as chaves de autenticação de criação de stream para o evento de transmissão ao vivo. Se você usar a autenticação de token, a chave será obrigatória.

Gerar um token HMAC

Para gerar um token, faça o seguinte:

  1. Reúna a chave de recurso e o tempo de expiração da transmissão ao vivo. Para mais informações, consulte Ativar a autenticação para solicitações de criação de sessões de stream de DAI
  2. Classifique os parâmetros a seguir em ordem alfabética e separe-os com o caractere til ~:

    event=ASSET_KEY~exp=EXPIRATION
    

    Substitua:

    • ASSET_KEY: obrigatório. A chave de recurso do evento de transmissão ao vivo.
    • EXPIRATION: obrigatório. O carimbo de data/hora de expiração do token no tempo de época do Unix.
  3. Calcule um hash SHA-256 da string de token usando sua chave de autenticação de DAI.

  4. Formate a saída de hash em hexadecimal.

  5. Para assinar a string de token, anexe a assinatura ao final dos parâmetros coletados anteriormente:

    event=...~hmac=HMAC_SIGNATURE
    

    Substitua HMAC_SIGNATURE pela assinatura gerada pelo hash da string de token usando sua chave de autenticação de DAI.

  6. Para transmitir a string de token assinada com segurança, aplique a codificação de URL a ela.

O exemplo a seguir assina e codifica uma string de token que expira em 60 segundos:

# 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

Usar o token HMAC para solicitar uma sessão de transmissão ao vivo

Para autenticar sua solicitação de criação de stream com um token HMAC, faça uma destas ações:

Cabeçalho da solicitação 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"

Parâmetro de string de consulta

  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 de dados do formulário

  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"

Se for bem-sucedido, você verá a seguinte resposta 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"
  }

Para entender a estrutura de resposta e os códigos de status, consulte Método: stream. Se a autenticação falhar, você verá o seguinte erro:

  <!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>