Mengautentikasi permintaan segmen pod iklan

Untuk penggabungan iklan sisi server, manipulator manifes Anda membuat permintaan segmen pod iklan ke DAI Google. Untuk mengetahui informasi selengkapnya, lihat Membangun URL segmen iklan.

Halaman ini membahas cara mengautentikasi permintaan segmen pod iklan menggunakan token HMAC.

Sebelum memulai

Sebelum Anda melanjutkan, lakukan hal berikut:

Membuat token HMAC

Untuk membuat token, lakukan hal berikut:

  1. Kumpulkan parameter jalur dan kueri (kecuali auth-token) yang diisi untuk permintaan segmen pod Anda. Untuk mengetahui daftar lengkapnya, lihat Metode: segmen pod.
  2. Atur parameter Anda ke dalam satu string. Anda harus mengurutkan parameter berdasarkan abjad dan memisahkannya dengan karakter tilde ~, misalnya:

    custom_asset_key=CUSTOM_ASSET_KEY~exp=EXPIRATION~network_code=NETWORK_CODE~pd=POD_DURATION~pod_id=POD_IDENTIFIER
    
  3. Hitung hash SHA-256 string token menggunakan kunci autentikasi DAI Anda.

  4. Memformat output hash dalam heksadesimal.

  5. Untuk menandatangani string token, tambahkan tanda tangan di akhir parameter yang dikumpulkan sebelumnya:

    custom_asset_key=...~hmac=HMAC_SIGNATURE
    

    Ganti HMAC_SIGNATURE dengan tanda tangan yang Anda buat dengan melakukan hashing pada string token menggunakan kunci autentikasi DAI Anda.

  6. Untuk meneruskan string token bertanda tangan dengan aman, terapkan encoding URL ke string token bertanda tangan.

    Contoh berikut menghasilkan nilai yang dienkode URL dari string token bertanda tangan:

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

Mengautentikasi permintaan segmen pod iklan HLS

Untuk mengautentikasi permintaan resource pod, gunakan parameter string kueri auth-token untuk meneruskan token HMAC bertanda tangan yang dienkode URL.

HLS

Contoh berikut menggunakan token HMAC untuk mengautentikasi permintaan segmen pod 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"

Jika berhasil, Anda akan melihat respons berikut:

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

Untuk memahami struktur respons dan kode status, lihat Metode: segmen pod.

Jika autentikasi gagal, Anda akan melihat 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

Contoh berikut menggunakan token HMAC untuk mengautentikasi permintaan segmen pod 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"

Jika berhasil, Anda akan melihat respons berikut:

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

Untuk memahami struktur respons dan kode status, lihat Metode: segmen pod.

Jika autentikasi gagal, Anda akan melihat x-ad-manager-dai-warning sebagai berikut:

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