Стриминг
Secure token для Стриминга. Настроить безопасный просмотр по временным ссылкам
Что такое Secure token и как он работает?
Чтобы защитить контент от нежелательных загрузок, воспользуйтесь опцией Secure Token в настройках CDN-ресурса. Подробнее об этой опции рассказываем в статье «Secure token. Обзор опции».
Как мы защищаем потоки с помощью Secure Token:
1. Стриминговая платформа получает от вас незащищённый поток или видео без токена.
2. Стриминговая платформа транскодирует полученный контент и раздаёт через сеть CDN-серверов.
3. Токен добавляется в URL видео или потока после транскодирования. Ссылки на защищаемый контент выглядят так:
https://cdn.example.com/streams/10_14/WG99BSGMdZIwKy/1552551429/playlist.m3u8 (поток)
https://cdn.example.com/videos/44_aJ0o71wfUwJvFDklkjlcu/master.m3u8 (видео)
Настроить защиту по временным ссылкам
1. Перейдите в раздел CDN-ресурсы и перейдите к настройкам ресурса, который используется для стриминга.
2. Спуститесь в раздел Безопасность и включите опцию Secure Token.
3. В появившемся окне введите желаемый ключ подписи. Ключ должен содержать от 6 до 32 символов.
4. Если контент должен быть доступен с любых IP-адресов, оставьте пустым чекбокс «Добавить IP-адрес к токену». Если хотите, чтобы контент был доступен только с одного IP, поставьте в чекбоксе галочку (доверенный IP вы укажете позже в вашем скрипте).
5. Сохраните настройки.
6. Добавьте на свой источник скрипт, который генерирует защищённые ссылки на контент. Ниже мы предоставили примеры PHP-скриптов для видео и потоков.
7. Организуйте свой источник таким образом, чтобы доступ к нужным файлам пользователи получали только по ссылкам с secure token. При этом наша CDN при обращении к серверу-источнику должна получать контент вне зависимости от наличия ключа.
PHP-скрипт для Live потока
Скрипт для создания временных ссылок без ограничения доступа по IP. Файлы будут доступны с любого IP, но только пока не истечёт срок жизни ссылки.
<?php
$secret = 'secret';
$vhost = 'cdn.example.com';
$client_id = 'your id';
$stream_id = '14';
$expires = time() + 10000;
$link = "{$client_id}_{$stream_id}_${secret}_${expires}_";
$md5 = md5($link, true);
$md5 = base64_encode($md5);
$md5 = strtr($md5, '+/', '-_');
$md5 = str_replace('=', '', $md5);
$url = "https://{$vhost}/streams/{$client_id}_${stream_id}/${md5}/${expires}/playlist.m3u8";
echo $url;
echo "\n";
Скрипт для создания временных ссылок с ограничением доступа по IP. Файлы будут доступны только с доверенного IP, и только пока не истечёт срок жизни ссылки.
<?php
$secret = 'secret';
$vhost = 'cdn.example.com';
$client_id = 'your id';
$stream_id = '14';
$remote_addr = 'watcher ip';
$expires = time() + 60;
$link = "{$client_id}_{$stream_id}_${secret}_${expires}_${remote_addr}";
$md5 = md5($link, true);
$md5 = base64_encode($md5);
$md5 = strtr($md5, '+/', '-_');
$md5 = str_replace('=', '', $md5);
$url = "http://{$vhost}/streams/{$client_id}_${stream_id}/${md5}/${expires}/playlist.m3u8";
echo $url;
echo "\n";
PHP-скрипт для видео
Скрипт для создания временных ссылок без ограничения доступа по IP. Файлы будут доступны с любого IP, но только пока не истечёт срок жизни ссылки.
<?php
$secret = 'secret';
$vhost = 'cdn.example.com';
$client_id = 'your id';
$video_id = 'a';
$expires = time() + 10000;
$link = "{$client_id}_{$video_id}_${secret}_${expires}_";
$md5 = md5($link, true);
$md5 = base64_encode($md5);
$md5 = strtr($md5, '+/', '-_');
$md5 = str_replace('=', '', $md5);
$url = "https://{$vhost}/videos/{$client_id}_${video_id}/${md5}/${expires}/master.m3u8";
echo $url;
echo "\n";
Скрипт для создания временных ссылок с ограничением доступа по IP. Файлы будут доступны только с доверенного IP, и только пока не истечёт срок жизни ссылки.
<?php
$secret = 'secret';
$vhost = 'cdn.example.com';
$client_id = 'your id';
$slug = 'slug from the video';
$remote_addr = 'watcher ip';
$expires = time() + 60;
$link = "{$client_id}_{$slug}_${secret}_${expires}_${remote_addr}";
$md5 = md5($link, true);
$md5 = base64_encode($md5);
$md5 = strtr($md5, '+/', '-_');
$md5 = str_replace('=', '', $md5);
$url = "https://{$vhost}/videos/{$client_id}_${slug}/${md5}/${expires}/master.m3u8";
echo $url;
echo "\n";
Где:
-
$secret — секретный ключ, который вы добавили на 3 шаге этой инструкции.
-
$vhost — доменное имя для CDN-ресурса.
-
$video_id — slug, индивидуальный параметр в URL видео. Его можно найти в прямой ссылке на видео (Настройки → Экспорт → URL-страницы) после ID вашего аккаунта. Например, в URL https://cdn.example.com/videos/123_gnhWeEAA6LT,
gnhWeEAA6LT — это slug. -
$remote_addr — IP-адрес, которому разрешено получить контент.
-
$expires — время жизни ссылки (в секундах).
-
$link — строка для генерации токена с учетом необходимых параметров хеш-ключа.
-
$url — ссылка на файл.