Skip to content

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

Middleware

Очень важная задача, которую надо решить при запуске 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 можно обновлять статистику по этой сессии, сохраняя информацию о том, кто сколько просмотрел.