Документация на Flussonic Media Server

  1. Быстрый старт
  2. How To
  3. Потоковое вещание
    1. Публикация
    2. Прием мультикаста
    3. Варианты источников
    4. Переключение источников
    5. Плейлисты
    6. Наложение логотипа
    7. Миксер
    8. WebRTC публикация
    9. SDI
    10. Отправка на другие сервера
    11. Распознавание DVB субтитров
  4. Транскодер
    1. Логотип
    2. Hardware
    3. Скриншоты
    4. Мозаика
  5. DRM
    1. Simple CAS
    2. Conax DRM
    3. BuyDRM (KeyOS)
  6. Авторизация
    1. Конструктор бэкендов
    2. Сервис сбора статистики
    3. Domain lock
    4. Middleware
    5. Secure links
    6. Ограничение сессий
    7. Мультиавторизация
    8. Бан IP адресов
    9. DVR
    10. Aliaser
  7. API
    1. HTTP API
    2. Events API
    3. MySQL API
    4. SQL API для кластеров
    5. SNMP
  8. Кластер
    1. Ретрансляция
    2. Кластерный захват
    3. Балансировщик нагрузки
    4. Пиринг
    5. Организация CDN
  9. VOD
    1. Кэш
    2. Облако
    3. Транскодирование файлов
  10. DVR
    1. Настройка
    2. Timeshift
    3. Catchup
    4. Проигрывание
    5. Экспорт в MP4
    6. Доступ по протоколам
    7. Timelapse
    8. API
    9. Кластеризация DVR
    10. Репликация
    11. Облако
  11. Воспроизведение
    1. HLS
    2. embed.html
    3. HTML5 с низкой задержкой
    4. Плеер HTML5 с низкой задержкой
    5. MPEG-TS
    6. RTMP
    7. DASH
    8. HDS
    9. RTSP
    10. multicast, CBR UDP
    11. WebRTC проигрывание
    12. H.265
  12. Администрирование
    1. Установка
    2. Обновление

    3. Конфигурация
    4. Мониторинг
    5. Производительность
    6. Лицензия
    7. LUA скрипты
    8. Безопасность
    9. Let's Encrypt
    10. Миграция
  13. IPTV
    1. Захват спутникового видео
    2. Транскодирование
    3. Middleware в IPTV OTT
    4. Экспорт EPG со спутника
    5. Группы каналов

Авторизация в Flussonic через Middleware

Middleware Anchor Anchor x2

Очень важная задача, которую надо решить при запуске OTT IPTV сервиса — ограничение доступа к стриминговым серверам. По нашей статистике многие люди вообще не обращают на это внимание и, как следствие, переплачивают за трафик — их потоки попросту воруют.

Видео можно раздавать всем, но хитро зашифрованное и не всем отдавать ключи, это называется DRM. Другой способ защиты — ограничивать раздачу самого видео, это уже авторизация.

В Flussonic Media Server реализована очень гибкая схема авторизации, требующая определенных действий со стороны Middleware.

Схема работы такая:

  • клиентская приставка обращается за адресом потока;
  • Middleware отдает адрес с уникальным токеном;
  • Flussonic Media Server использует этот токен для идентификации сессии;
  • при открытии сессии Flussonic Media Server проверяет этот токен у Middleware.

Такая трехсвязная схема нужна для того, что бы не встраивать авторизацию в Flussonic Media Server. В свою очередь Flussonic Media Server не на каждый запрос клиента ходит к Middleware, а только раз в определенное время.

Вопрос правильного выбора токена открытый и мы можем предложить пару вариантов по его генерации.

Share nothing токен

Можно генерировать токены, упаковывая в них всю необходимую для авторизации информацию. Например, токен можно сгенерировать таким образом:

token=sha1(secret_key + ip + stream_name)

Такой токен можно проверить, зная лишь secret_key. При этом, если злоумышленник попробует воспользоваться этим токеном, у него ничего не получится, потому что IP будет другим.

Однако такой токен можно сохранить и пользоваться им бесконечно. Если пользователь один раз оплатил подписку на сервис, то потом с таким токеном ему можно уже не платить.

В токен можно вставить время:

time = utc()
token=sha1(secret_key + ip + stream_name + time)+":"+time

Теперь Middleware при проверке может проверить время жизни токена и, если ему больше суток, может его отключать. На практике почти никто (кроме публичных телевизоров и поклонников 24 Le Mans) не в состоянии смотреть эфир больше суток подряд.

Токены в базе

Можно совместить авторизацию с учетом просмотра и под каждый просмотр создавать пользователю новый уникальный токен, помещая его в базу:

token=uuid()

Потом при повторных обращениях Flussonic Media Server к Middleware можно обновлять статистику по этой сессии, сохраняя информацию о том, кто сколько просмотрел.