Бэкенд авторизации¶
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 его переопределяет. Если повторная проверка запрещает доступ, сессия закрывается. Подробнее — авторизация сессии и статистика.