Skip to content

Бэкенд авторизации

media.access.auth_backend

HTTP-бэкенд авторизации — устаревший механизм (deprecated), не рекомендуемый для новых интеграций. Для новых интеграций используйте JWT зрителя: приложение получает подписанный токен через API central, а эджи проверяют его локально. HTTP-бэкенд сохраняется для совместимости с существующими установками.

При HTTP-авторизации стример обращается к бэкенду при первом допуске сессии и при её переавторизации, а не на каждом сегменте HLS/DASH. Массовое начало просмотра и повторные проверки создают нагрузку на бэкенд. Такой сервис требует ресурсов на обработку запросов, высокой доступности и малой задержки: его ответы влияют на начало и продолжение просмотра. JWT устраняет эту зависимость локальной проверкой на стримере.

Как передается токен

Токен принимается двумя способами:

  • Параметр URL — ?token=<token>, имеет приоритет.
  • Заголовок — Authorization: Bearer <token>, используется, если параметра token в URL нет.

Для HLS достаточно открыть мастер-плейлист с токеном — Sapsan сам допишет ?token= во все вложенные URL (варианты, сегменты, части, init).

Внешние auth-бекенды

Решение можно делегировать HTTP-бекендам:

auth:
  upstreams:
    main:
      url: http://backend.example.com/auth
      timeout_ms: 3000

Sapsan делает POST на url бекенда с JSON-телом:

{
  "kind": "play",
  "stream_name": "cam1",
  "proto": "hls",
  "user_agent": "Mozilla/5.0 ...",
  "token": "viewer-secret-1",
  "session_id": "..."
}

Решение принимается по HTTP-статусу ответа (тело не разбирается):

  • 2xx — разрешить;
  • 401 или 403 — запретить (отказ кешируется, повторный идентичный запрос не дергает бекенд);
  • любой другой статус, недоступность или превышение timeout_ms (по умолчанию 1000 мс) — бекенд считается упавшим;
  • несколько бекендов опрашиваются параллельно: достаточно одного «разрешить»; если есть только отказы — запрет; если все бекенды недоступны — ошибка «бекенд недоступен» (не тихий запрет).

Сессии

HTTP-сессия объединяет запросы по медиа, типу доступа (play/publish), IP и токену. User-Agent не входит в эту идентичность. Несколько устройств за одним NAT с одним токеном могут объединяться в сессию — это не идентификатор физического устройства.

Повторные медиазапросы используют допуск сессии до окончания окна авторизации. По умолчанию интервал переавторизации — 180 секунд; auth_duration в конфигурации задаёт другой интервал, а заголовок ответа бэкенда X-AuthDuration его переопределяет. Если повторная проверка запрещает доступ, сессия закрывается. Подробнее — авторизация сессии и статистика.

Что дальше