Перейти к содержимому
Продукты

Securetoken

Защищает контент от несанкционированного доступа с помощью временных токенов

Авторизация Securetoken

  1. Клиент запрашивает плейлист у middleware.
  2. Middleware генерирует временный токен для каждого канала.
  3. Клиент запрашивает канал с токеном.
  4. Alta проверяет токен; если он действителен, доступ разрешается.

Временный токен вычисляется middleware на стороне сервера, когда клиент запрашивает плейлист. Токен состоит из следующих компонентов:

  • Hash: SHA1-хеш, вычисляемый на стороне сервера.
  • Salt: случайная строка для повышения безопасности.
  • End time: время окончания действия токена (UNIX timestamp).
  • Start time: время создания токена (UNIX timestamp).

Все части разделяются знаком минус и добавляются к адресу канала. Например: https://example.com:8100/tv/travel-channel/index.m3u8?token=e8bff06f373694dda657e8417fe76f6b54b69807-a5cd6c00-1669890000-1669810000

Последовательно объедините следующие значения и вычислите SHA1-хеш:

  • Путь канала (например, /tv/travel-channel/index.m3u8). Должен точно совпадать с запрошенным путём
  • IP-адрес клиента
  • Время начала (UNIX timestamp)
  • Время окончания (UNIX timestamp)
  • Securetoken - задаётся в настройках Alta
  • Salt

Формула:

sha1(channel_path + client_ip + start_time + end_time + securetoken + salt)

Встроенный генератор защищённых ссылок удобен для создания защищённых ссылок для тестов на любом канале. Если для канала включён securetoken, вы можете сгенерировать защищённую ссылку в панели администратора:

  1. Перейдите в настройки канала
  2. Нажмите кнопку “Secure link”, чтобы открыть диалог “Generate Channel Secure Link”.
  3. Заполните следующие поля:
    • IP: IP-адрес клиента.
    • Start / End: период действия токена.
  4. Нажмите Generate, чтобы создать ссылку с токеном

Создайте файл securetoken.php со следующим кодом:

<?php
$channel = '/tv/travel-channel/index.m3u8';
$client = '192.168.88.98';
$starttime = 1669810000;
$endtime = 1669890000;
$securetoken = 'secret';
$salt = 'a5cd6c00';
$hash = sha1($channel . $client . $starttime . $endtime . $securetoken . $salt);
$token = $hash . '-' . $salt . '-' . $endtime . '-' . $starttime;
echo 'https://example.com:8100' . $channel . '?token=' . $token . PHP_EOL;

Запустите скрипт:

php securetoken.php

Вы увидите строку из первого примера. Обратите внимание: этот скрипт приведён только в качестве примера.