Autenticar solicitações de segmento de conjunto de anúncios

Para a costura de anúncios do lado do servidor, o manipulador de manifesto faz solicitações de segmento de conjunto de anúncios para a DAI do Google. Para mais informações, consulte Criar URLs de segmento de anúncio.

Esta página aborda a autenticação de solicitações de segmento de conjunto de anúncios usando o token HMAC.

Antes de começar

Antes de continuar, faça o seguinte:

  • Concluir os pré-requisitos.
  • Verifique se as chaves de autenticação de recursos de conjunto estão ativadas no evento de transmissão ao vivo na sua conta do Google Ad Manager.

Gerar um token HMAC

Para gerar um token, faça o seguinte:

  1. Colete o caminho e os parâmetros de consulta (exceto o token de autenticação) preenchidos para a solicitação de segmento de conjunto. Para uma lista completa, consulte Método: segmento de conjunto.
  2. Organize os parâmetros em uma única string. É necessário classificar os parâmetros em ordem alfabética e separá-los com o caractere til ~, por exemplo:

    custom_asset_key=CUSTOM_ASSET_KEY~exp=EXPIRATION~network_code=NETWORK_CODE~pd=POD_DURATION~pod_id=POD_IDENTIFIER
    
  3. Calcule um hash SHA-256 da string de token usando sua chave de autenticação da DAI.

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

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

    custom_asset_key=...~hmac=HMAC_SIGNATURE
    

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

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

    O exemplo a seguir gera o valor codificado por URL de uma string de token assinada:

HLS

# Add 60 seconds to the current time
future_epoch=$((EPOCHSECONDS + 60))

echo "Current: $EPOCHSECONDS"
echo "Future: $future_epoch"
# Current: 1774465950
# Future: 1774466010

# Sample DAI pod resource authentication key
key="EB08..."

# Sort parameters in the token string
token="ad_break_id=ab1~custom_asset_key=hls-pod-serving-redirect-auth-stream-pod~exp=1774466010~network_code=21775744923~pd=30000"

# Generate the token's signature.
echo -n $token | openssl dgst -sha256 -mac HMAC -macopt key:$key

# SHA2-256(stdin)= ff38abab31b436351e20ecd57bcc5b97acd9461abb71c4cf9c9731add965ecf2

# Sign the token: ad_break_id=ab1~custom_asset_key=hls-pod-serving-redirect-auth-stream-pod~exp=1774466010~network_code=21775744923~pd=30000~hmac=ff38abab31b436351e20ecd57bcc5b97acd9461abb71c4cf9c9731add965ecf2

# Encode the token: ad_break_id%3Dab1~custom_asset_key%3Dhls-pod-serving-redirect-auth-stream-pod~exp%3D1774466010~network_code%3D21775744923~pd%3D30000~hmac%3Dff38abab31b436351e20ecd57bcc5b97acd9461abb71c4cf9c9731add965ecf2

DASH

# Add 60 seconds to the current time
future_epoch=$((EPOCHSECONDS + 60))

echo "Current: $EPOCHSECONDS"
echo "Future: $future_epoch"
# Current: 1769540517
# Future: 1769540577

# Sample DAI pod resource authentication key
key="EB08..."

# Sort parameters in the token string
token="ad_break_id=ab1~custom_asset_key=dash-pod-serving-redirect-auth-stream-pod~exp=1774466641~network_code=21775744923~pd=30000"

# Generate the token's signature.
echo -n $token | openssl dgst -sha256 -mac HMAC -macopt key:$key

# SHA2-256(stdin)= 7249f9193778f2318314519ff2cea5c47958bc7fdd2eaf24008352867af0a050

# Sign the token: ad_break_id=ab1~custom_asset_key=dash-pod-serving-redirect-auth-stream-pod~exp=1774466641~network_code=21775744923~pd=30000~hmac=7249f9193778f2318314519ff2cea5c47958bc7fdd2eaf24008352867af0a050

# Encode the token: ad_break_id%3Dab1~custom_asset_key%3Ddash-pod-serving-redirect-auth-stream-pod~exp%3D1774466641~network_code%3D21775744923~pd%3D30000~hmac%3D7249f9193778f2318314519ff2cea5c47958bc7fdd2eaf24008352867af0a050

Autenticar uma solicitação de segmento de conjunto de anúncios HLS

Para autenticar as solicitações de recursos de conjunto, use o parâmetro de string de consulta auth-token para transmitir o token HMAC assinado codificado por URL.

HLS

O exemplo a seguir usa um token HMAC para autenticar uma solicitação de segmento de conjunto HLS:

curl --include "https://dai.google.com/linear/pods/v1/seg/network/21775744923/custom_asset/hls-pod-serving-redirect-auth-stream-pod/ad_break_id/ab1/profile/media-ts-4628000bps/0.ts?stream_id=51b85d28-7ed5-48da-bfd8-e013b7d7b204:DLS&&sd=10000&pd=30000&auth-token=ad_break_id%3Dab1~custom_asset_key%3Dhls-pod-serving-redirect-auth-stream-pod~exp%3D1774466010~network_code%3D21775744923~pd%3D30000~hmac%3Dff38abab31b436351e20ecd57bcc5b97acd9461abb71c4cf9c9731add965ecf2"

Se a operação for bem-sucedida, você verá a seguinte resposta:

...
< HTTP/2 302
< access-control-allow-headers: Authorization
< access-control-allow-origin: *
< access-control-expose-headers: Location
< cache-control: no-cache, no-store, max-age=0, must-revalidate
< date: Wed, 25 Mar 2026 18:13:40 GMT
< expires: Mon, 01 Jan 1990 00:00:00 GMT
< location: https://redirector.googlevideo.com/....
< pragma: no-cache
< x-content-type-options: nosniff
< x-frame-options: SAMEORIGIN
...

Para entender a estrutura de resposta e os códigos de status, consulte Método: segmento de conjunto.

Se a autenticação falhar, você verá o x-ad-manager-dai-warning:

...
< HTTP/2 302
< access-control-allow-headers: Authorization
< access-control-allow-origin: *
< access-control-expose-headers: Location
< cache-control: no-cache, no-store, max-age=0, must-revalidate
< date: Wed, 25 Mar 2026 18:17:21 GMT
< expires: Mon, 01 Jan 1990 00:00:00 GMT
< location: https://redirector.googlevideo.com/....
< pragma: no-cache
< x-ad-manager-dai-warning: Unable to create ad break due to Unauthorized error (skipping ad break creation)
< x-content-type-options: nosniff
...

DASH

O exemplo a seguir usa um token HMAC para autenticar uma solicitação de segmento de conjunto DASH:

curl --include "https://dai.google.com/linear/pods/v1/seg/network/21775744923/custom_asset/dash-pod-serving-redirect-auth-stream-pod/ad_break_id/ab1/profile/media-ts-4628000bps/0.ts?stream_id=8b061ab5-1efc-4e4d-882f-ae3c071df854:ATL&&sd=10000&pd=30000&auth-token=ad_break_id%3Dab1~custom_asset_key%3Ddash-pod-serving-redirect-auth-stream-pod~exp%3D1774466641~network_code%3D21775744923~pd%3D30000~hmac%3D7249f9193778f2318314519ff2cea5c47958bc7fdd2eaf24008352867af0a050"

Se a operação for bem-sucedida, você verá a seguinte resposta:

...
HTTP/2 302
..
location: https://redirector.googlevideo.com/....
...

Para entender a estrutura de resposta e os códigos de status, consulte Método: segmento de conjunto.

Se a autenticação falhar, você verá o x-ad-manager-dai-warning da seguinte maneira:

...
HTTP/2 302
..
location: https://redirector.googlevideo.com/....
pragma: no-cache
x-ad-manager-dai-warning: Unable to create ad break due to Unauthorized error (skipping ad break creation)
x-content-type-options: nosniff
...