Mengautentikasi permintaan sesi streaming

Permintaan streaming mendaftarkan sesi untuk acara livestream. Untuk mengetahui detailnya, lihat Membuat permintaan streaming

Halaman ini membahas cara menggunakan token HMAC untuk mengautentikasi permintaan streaming.

Sebelum memulai

Sebelum melanjutkan, lakukan hal berikut:

  • Selesaikan prasyarat.
  • Di akun Google Ad Manager, aktifkan Kunci autentikasi pembuatan streaming untuk acara livestream Anda. Jika Anda menggunakan autentikasi token, kunci ini wajib diisi.

Membuat token HMAC

Untuk membuat token, lakukan hal berikut:

  1. Kumpulkan kunci aset dan waktu habis masa berlaku livestream Anda. Untuk mengetahui informasi selengkapnya, lihat Mengaktifkan autentikasi untuk permintaan pembuatan sesi streaming DAI
  2. Urutkan parameter berikut menurut abjad dan pisahkan parameter dengan karakter tilde ~:

    event=ASSET_KEY~exp=EXPIRATION
    

    Ganti kode berikut:

    • ASSET_KEY: Wajib. Kunci aset acara livestream.
    • EXPIRATION: Wajib. Stempel waktu habis masa berlaku untuk token dalam waktu epoch Unix.
  3. Hitung hash SHA-256 dari string token menggunakan kunci autentikasi DAI Anda.

  4. Format output hash dalam heksadesimal.

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

    event=...~hmac=HMAC_SIGNATURE
    

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

  6. Untuk meneruskan string token yang ditandatangani dengan aman, terapkan encoding URL ke string token yang ditandatangani.

Contoh berikut menandatangani dan mengenkode string token yang masa berlakunya habis dalam waktu 60 detik:

# 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

Menggunakan token HMAC untuk meminta sesi livestream

Untuk mengautentikasi permintaan pembuatan streaming dengan token HMAC, lakukan salah satu hal berikut:

Header permintaan 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"

Parameter string kueri

  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"

Kolom data formulir

  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"

Jika berhasil, Anda akan melihat respons JSON berikut:

  {
  "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"
  }

Untuk memahami struktur respons dan kode status, lihat Metode: streaming. Jika autentikasi gagal, Anda akan melihat error berikut:

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