Mengautentikasi permintaan sesi streaming

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

Halaman ini membahas penggunaan token HMAC untuk mengautentikasi permintaan streaming.

Sebelum memulai

Sebelum Anda 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 diperlukan.

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 guna membuat 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 live stream.
    • EXPIRATION: Wajib. Stempel waktu masa berlaku token dalam waktu epoch Unix.
  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:

    event=...~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 menandatangani dan mengenkode string token yang akan habis masa berlakunya 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

Gunakan 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: stream. 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>