Reklam kapsülü segmenti isteklerinin kimliğini doğrulama

Sunucu tarafı reklam birleştirme için manifest düzenleyiciniz, Google DAI'ye reklam kapsülü segmenti istekleri gönderir. Daha fazla bilgi için Reklam segmenti URL'leri oluşturma başlıklı makaleyi inceleyin.

Bu sayfada, HMAC jetonu kullanılarak reklam kapsülü segmenti isteklerinin kimliğinin doğrulanması ele alınmaktadır.

Başlamadan önce

Devam etmeden önce aşağıdakileri yapın:

  • Ön koşulları tamamlayın.
  • Google Ad Manager hesabınızdaki canlı yayın etkinliğinizde Pod kaynağı kimlik doğrulama anahtarlarının etkinleştirildiğinden emin olun.

HMAC jetonu oluşturma

Jeton oluşturmak için aşağıdakileri yapın:

  1. Pod segmenti isteğiniz için doldurulan yolu ve sorgu parametrelerini (auth-token hariç) toplayın. Tam liste için Yöntem: pod segment başlıklı makaleyi inceleyin.
  2. Parametrelerinizi tek bir dize halinde düzenleyin. Parametreleri alfabetik olarak sıralamanız ve tilde ~ karakteriyle ayırmanız gerekir. Örneğin:

    custom_asset_key=CUSTOM_ASSET_KEY~exp=EXPIRATION~network_code=NETWORK_CODE~pd=POD_DURATION~pod_id=POD_IDENTIFIER
    
  3. DAI kimlik doğrulama anahtarınızı kullanarak jeton dizesinin SHA-256 karmasını hesaplayın.

  4. Karma çıkışını onaltılık biçimde biçimlendirin.

  5. Jeton dizesini imzalamak için daha önce toplanan parametrelerin sonuna imzayı ekleyin:

    custom_asset_key=...~hmac=HMAC_SIGNATURE
    

    HMAC_SIGNATURE yerine, jeton dizesini DAI kimlik doğrulama anahtarınızla karma oluşturarak ürettiğiniz imzayı girin.

  6. İmzalı jeton dizesini güvenli bir şekilde iletmek için imzalı jeton dizesine URL kodlaması uygulayın.

    Aşağıdaki örnek, imzalı bir jeton dizesinin URL biçiminde kodlanmış değerini oluşturur:

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

HLS reklam kapsülü segmenti isteğinin kimliğini doğrulama

Pod kaynağı isteklerinizin kimliğini doğrulamak için URL kodlu imzalı HMAC jetonunu iletmek üzere auth-token sorgu dizesi parametresini kullanın.

HLS

Aşağıdaki örnekte, bir HLS pod segmenti isteğinin kimliğini doğrulamak için HMAC jetonu kullanılmaktadır:

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"

Başarılı olursa aşağıdaki yanıtı görürsünüz:

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

Yanıt yapısını ve durum kodlarını anlamak için Yöntem: pod segment başlıklı makaleyi inceleyin.

Kimlik doğrulama başarısız olursa x-ad-manager-dai-warning simgesini görürsünüz:

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

Aşağıdaki örnekte, bir DASH pod segmenti isteğinin kimliğini doğrulamak için HMAC jetonu kullanılmaktadır:

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"

Başarılı olursa aşağıdaki yanıtı görürsünüz:

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

Yanıt yapısını ve durum kodlarını anlamak için Yöntem: pod segment başlıklı makaleyi inceleyin.

Kimlik doğrulama başarısız olursa x-ad-manager-dai-warning aşağıdaki gibi görünür:

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