Внешняя авторизация

В данном случае авторизация запросов к потокам происходит за пределами сети CDN, например, с помощью скрипта авторизации на стороне владельца контента.
Для доступа к защищённым потокам владелец контента формирует ссылки с указанием авторизационных параметров после знака ‘?’, ниже пример для RTMP:
rtmp://flash.probro.ru/live?auth_id=13211 Stream name: stream.sdp
Какие именно авторизационные параметры использовать, остаётся на усмотрение владельца контента.
При каждом обращении пользователя к защищённому потоку сервер CDN отправляет HTTP-запрос HEAD к скрипту авторизации на стороне владельца контента.

 

Бесплатное тестовое подключение в течении 14 дней!

Высокая скорость доставки контента любого объема для ваших интернет проектов по всей России

Записаться на тест

 

В заголовках запроса передаются следующие параметры:

  • x-cdn-method : тип запрошенного потока;
  • x-cdn-stream-name : имя запрошенного потока;
  • x-cdn-client-ip : IP-адрес пользователя;
  • x-cdn-query : авторизационные параметры запроса; в случае HTTP это queryString, в случае RTMP – аргументы NetConnect, указанные после знака ‘?’;
  • x-cdn-uri : URI потока;
  • x-cdn-referrer : URL Flash-плеера (только для Flash);
  • x-cdn-user-agent : название и версия плеера пользователя;
  • x-cdn-page-url : URL страницы, содержащей код Flash-плеера (только для Flash);
  • x-cdn-session-id : идентификатор сессии;
  • x-cdn-event : событие.

Возможные значения заголовка x-cdn-method:

  • flash : Adobe Flash Player (RTMP);
  • http : HTTP-протоколы (HDS, HLS, MSS).

Возможные значения заголовка x-cdn-event:

  • play : запрос на проигрывание потока;
  • publish : запрос на публикацию потока.

Для URI, приведенного в качестве примера, будут сформированы следующие заголовки:

x-cdn-method: flash
x-cdn-stream-name: stream.sdp
x-cdn-client-ip: 212.2.21.117
x-cdn-query: auth_id=13211
x-cdn-uri: rtmp://flash.probro.ru/live
x-cdn-referrer: http://www.probro.net/aloha/wowza-examples/LiveVideoStreaming/client/live.swf

x-cdn-user-agent: MAC 10,1,85,3
x-cdn-page-url: http://www.probro.net/aloha/wowza-examples/LiveVideoStreaming/client/live.html
x-cdn-session-id: 921547595
x-cdn-event: play

В ответ сервер CDNvideo ожидает HTTP response со статусом ‘200 OK’, содержащий следующие заголовки:

  • x-cdn-status-int : результат авторизации;
  • x-cdn-status-text : текстовое описание ответа;
  • x-cdn-msg : текст для передачи ошибки в плеер (RTMP).

Возможные значения заголовка x-cdn-status-int:

  • 0 : доступ разрешен;
  • 1 : доступ запрещен.

Пример разрешающего ответа:

x-cdn-status-int: 0
x-cdn-status-text: OK

Пример запрещающего ответа:

x-cdn-status-int: 1
x-cdn-status-text: Access forbidden, auth_id not exist.

Схема успешной авторизации

 

 

Для настройки такой схемы необходимо предоставить URL внешнего скрипта авторизации.

 

Авторизация в сети CDN

 

В данном случае авторизация запросов пользователей выполняется исключительно в сети CDN, внешние ресурсы не используются.

В момент обращения пользователя к защищённому потоку владельцу контента необходимо сформировать ссылку вида:
rtmp://customer.probro.ru/app_name/stream_name.sdp?md5=5Zx3SyB0XXwvE8M5BatM5Q&e=1382358959

Ссылка содержит два авторизационных параметра:

  • хэш MD5, сгенерированный на основе URI, времени жизни ссылки, секретного ключа, IP-адреса пользователя (опционально);
  • e – время окончания действия ссылки (в формате POSIX time).

При обращении к потоку с использованием сгенерированной ссылки, CDN вычисляет значение MD5 и сравнивает его с полученным. Если значение не совпадает или текущее время превышает значение “e”, то пользователю сразу возвращается HTTP-ответ с кодом ‘403 Forbidden’ (запрет на воспроизведение).
Алгоритм расчета MD5-хэша может использовать IP-адрес пользователя в качестве одного из входных параметров. Пример вычисления MD5-хэша с использованием IP-адреса:

md5 = base64_url(md5(SECRET:1382106248:1.2.3.4:/app_name/stream_name.sdp))

 

Бесплатное тестовое подключение в течении 14 дней!

Высокая скорость доставки контента любого объема для ваших интернет проектов по всей России

Записаться на тест

Пример генерации ссылки

  • Время жизни:

php -r 'print time() + (7 * 24 * 60 * 60) . "\n";' 1382358959

  • md5 хэш:

php -r 'print str_replace("=", "",strtr(base64_en-code(md5("zah5Mey9Quu8Ea1k:1382358959:1.2.3.4:/app_name/stream_name.sdp", TRUE)), "+/", "-_")) . "\n";' 5Zx3SyB0XXwvE8M5BatM5Q

  • Итоговая ссылка:

rtmp://customer.probro.ru/app_name/stream_name.sdp?md5=5Zx3SyB0XXwvE8M5BatM5Q&e=1382358959

Таким образом, контролируются следующие параметры:

  1. URI запрашиваемого потока. Проверяется, что ссылка была сформирована именно для этого потока.
  2. Секретный ключ. Проверяется, что ссылка сформирована именно владельцем кон-тента.
  3. Время окончания действия ссылки.
  4. IP-адрес пользователя (опционально). Проверяется, что поток запрошен именно с того IP-адреса, для которого была сформирована ссылка.

Кроме того, могут быть проверены и другие параметры запроса пользователя:

  1. Географическая принадлежность пользователя (на основе IP-адреса), с детализацией до уровня города.
  2. URL страницы, содержащей код Flash-плеера (только для Flash). Позволяет контролировать, на каких доменах может быть размещён код плеера.

Для настройки необходимо предоставить следующую информацию:

  1. секретный ключ;
  2. алгоритм расчёта MD5 (с использованием IP-адреса пользователя или без);
  3. по каким параметрам проводить авторизацию (GeoIP, привязка к доменам).

 

Бесплатное тестовое подключение в течении 14 дней!

Высокая скорость доставки контента любого объема для ваших интернет проектов по всей России

Записаться на тест