Документация на 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. Группы каналов

Ограничение количества сессий на пользователя (защита от кражи)

Ограничение сессий Anchor Anchor x2

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

Таким образом, даже получив доступ ко всем потокам, пользователь сможет просматривать одновременно лишь N и попытки зеркалировать все потоки ни к чему не приведут.

Ограничение производится на каждого пользователя, который имеет свой UserId и задаётся с помощью авторизации.

Детали Anchor Anchor x2

Для того чтобы ограничить количество сессий до 2, нужно в авторизационном бэкенде отдавать следующие заголовки:
X-UserId: some-user-id
X-Max-Sessions: 2

А через lua-бэкенд поля user_id и max_sessions соответственно.

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

Бан Anchor Anchor x2

После того как сессия была забанена, любые попытки переоткрыть её в течении X-AuthDuration будут отклонены Flussonic Media Server.

Таким образом, если указать X-AuthDuration: 3600, и открыть лишний поток, то после блокировки этот поток будет нельзя открыть используя старый токен в течении часа.

После того как сессия будет заблокирована на очередной запрос HLS-плейлиста клиент получит ответ 403 Forbidden. В случае же с RTSP, RTMP, HTTP MPEG-TS сокет будет просто молча закрыт.

Каждая заблокированная сессия сопровождается записью в лог вроде:

14:58:51.598 <0.391.0> [stream-name] session_limiter:174 Ban session_id: <<"604551981e3e787b897afbaf35bb9f4d168d70b9">> for user_id: <<"8471796306">> and token: <<"5cfb82ecaf56ebfe7ac32a9020c86ef1d231d49e">> due to exceded session limit

Мягкое ограничивание Anchor Anchor x2

Некоторые Middleware не могут генерировать новый токен на каждый запрос HLS потока. При переключении между потоками это может создать проблемы, так как сессии на старых потоках будут помечены как лишние, и будут заблокированы.

Специально для этих случаев в Flussonic Media Server начиная с 4.5.23 версии есть механизм мягкого ограничения сессий.

Иногда блокировка не происходит в первую проверку, необходимо время чтобы понять что все сессии действительно используются. Тогда она происходит во вторую или третью. Таким образом, после появления лишних сессий они обычно блокируются через 30-90 секунд.

Для того чтобы включить этот режим, необходимо указать дополнительный ключ soft_limitation=true к опции auth, например:

stream foobar {
  auth http://localhost:8081/my_auth_script.php soft_limitation=true;
}

X-Unique: true Anchor Anchor x2

Заголовок X-Unique считается устаревшим, вместо него предполагается использовать X-Max-Sessions описанный выше.
X-UserId: some-id
X-Unique: true

Эквивалентно:

X-UserId: some-id
X-Max-Sessions: 1

Кроме того, если указаны и X-Max-Sessions и X-Unique, то приоритет отдаётся X-Max-Sessions. Таким образом:

X-UserId: some-id
X-Max-Sessions: 5
X-Unique: true

Эквивалентно:

X-UserId: some-id
X-Max-Sessions: 5

Замечания по версиям Anchor Anchor x2

  • В версии 4.5.5 и выше Flussonic Media Server может разрешать N сессий, а не только одну. (X-Unique: true)
  • В версии 4.5.13 и выше период перепроверки сессии через бэкенд (X-AuthDuration) по-умолчанию равен 180 секунд (3 минуты), вместо 30 секунд.
  • В версии 4.5.15 и выше возвращаемый auth_time из lua-бэкенда трактуется как секунды (до этого -- миллисекунды), по-аналогии с X-AuthDuration http-бэкенда.