Top.Mail.Ru

Стриминг

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.

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 — ссылка на файл.

 

Мы используем cookie, чтобы сайт стал лучше для вас.