Skip to content

Настройка авторизации проигрывания

Без авторизации проигрывания инсталяция Catena SE доступна всем желающим в интернете и довольно быстро превратится в бесплатный источник для чужих сервисов.

Чтобы смотреть могли только ваши абоненты, необходимо настроить авторизацию и связать её с вашей middleware.

В Catena SE базовый подход такой:

  • клиент получает URL проигрывания, в котором есть токен;
  • Catena SE проверяет этот токен локально (securelink) или через ваш backend (middleware).

Правила проверки токена описываются в авторизационных бекендах.

Авторизационный бекенд - это набор правил, позволяющих:

  1. сразу разрешить клиенту просмотр на основании его IP адреса или известного токена
  2. сразу запретить просмотр на основании геолокации или других признаков
  3. проверить токен по определенным правилам локальной
  4. отправить токен на проверку в стороннюю систему, например middleware

Токены

Токен — это строка, которая добавляется к URL проигрывания (в query string) и позволяет:

  • отличить “своего” клиента от “чужого”;
  • ограничить время жизни ссылки (TTL);
  • (опционально) привязать просмотр к IP/устройству/сессии;
  • (опционально) собирать статистику и ограничивать мультискрин.

Практическое правило: токен должен быть короткоживущим и генерироваться вашей системой выдачи ссылок (портал/middleware).

Если вы не хотите (или пока не можете) делать отдельный backend для проверки прав, можно использовать “securelink” — проверку токена по общей формуле с секретным ключом.

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

  • ваш портал генерирует токен по формуле и хеширует его секретным ключом;
  • клиент открывает поток с этим токеном;
  • Catena SE пересчитывает ожидаемый токен тем же способом и сравнивает;
  • если совпало — доступ разрешён, если нет — запрещён.

Обычно в токен включают:

  • имя канала (или другой идентификатор контента),
  • время начала/окончания действия токена (TTL),
  • (опционально) IP клиента,
  • (опционально) user_id (для ограничения количества одновременных сессий).

Плюсы securelink:

  • не нужен отдельный сервис проверки на каждый просмотр;
  • высокая производительность и простая эксплуатация.

Минусы securelink:

  • сложнее сделать тонкие политики (пакеты каналов, гео, устройства, аудит) без усложнения токена;
  • при компрометации ключа придётся оперативно его менять.

Для включения securelink, надо включить возможность этой проверки в настройках авторизационного бекенда.

Как работает backend middleware

В “классической” схеме Catena SE проверяет доступ через backend (middleware) с помощью механизма on_play.

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

  • клиент запрашивает URL у middleware;
  • middleware возвращает URL с уникальным токеном;
  • при открытии новой сессии Catena SE обращается к backend и спрашивает, можно ли проигрывать;
  • middleware отвечает “разрешить/запретить” и (опционально) возвращает дополнительные параметры сессии.

Важно: Catena SE не ходит в middleware на каждый сегмент. Проверка делается при открытии сессии и затем периодически перепроверяется (это снижает нагрузку на backend).

Этот вариант лучше всего подходит, когда вам нужно:

  • включать/отключать доступ по подписке в реальном времени;
  • ограничивать мультискрин и/или собирать статистику;
  • применять сложные правила (гео, устройства, пакеты, родительский контроль и т.п.).

Session keys: что это и зачем

Catena SE ведёт понятие “сессии” проигрывания. Сессия идентифицируется на основе набора ключей (например: протокол, имя канала, IP, токен).

По умолчанию (идеологически) это выглядит так:

  • session_id = hash(name + ip + proto + token)

Если меняется любой из ключей, с точки зрения сервера это новая сессия, и он может:

  • заново проверить доступ у backend,
  • заново применить лимиты (например, “сколько одновременных просмотров разрешено”),
  • пересоздать состояние (что иногда видно пользователю как “переподключение”).

Зачем управлять session keys:

  • мобильные сети: у клиента может меняться IP при переходе между сотами;
  • NAT/прокси: реальный IP может быть нестабильным или общим для группы пользователей;
  • устойчивость сессий: иногда важнее “не рвать просмотр” при смене IP, чем жёстко привязывать токен к IP.

Компромисс здесь простой:

  • чем меньше параметров участвует в идентификаторе сессии, тем стабильнее просмотр при сетевых изменениях;
  • чем больше параметров (например, IP), тем сильнее защита от передачи ссылки “другому человеку”.

Если вы используете middleware backend, настройку session keys имеет смысл фиксировать в вашей архитектуре авторизации как отдельное решение “безопасность vs UX”.

Для настройки ключей сессии надо редактировать их список в авторизационном бекенде.

Multiauth

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

Для этого достаточно в конфигураторе авторизационного бекенда указать несколько серверов.