Авторизация клиентов производится с помощью модуля mod_auth. Для проверки прав доступа mod_auth делает HTTP-запросы к внешнему серверу, который выполняет роль сервера авторизации.
Если в теле ответа на запросы watch и stream - это строка OK, то доступ разрешён, иначе - запрещён. Пустые строки в конце ответа игнорируются. Если запрос завершился с ошибкой, то доступ запрещён. Если доступ запрещён, то соединение с RTMP-клиентом разрывается.
Пример настройки mod_auth:
mod_auth { enable = y // Сервер, на который отправляются HTTP-запросы auth_host = 1.2.3.4:8080 // Адрес сервера moment или любой идентификатор, // чтобы различать moment-серверы в кластере this_host = HOST // запрос проверки доступа для просмотра видеопотока watch_req = "auth/watch?myparam=foobar" // запрос проверки доступа для вещания stream_req = "auth/stream" // уведомление об отключении disconnected_req = auth/disconnected }
При такой настройке mod_auth делает следующие HTTP-запросы:
Просмотр: http://1.2.3.4:8080/auth/watch?myparam=foobar&host=HOST&client=3.4.5.6&stream=StreamName&auth=foobar Вещание: http://1.2.3.4:8080/auth/stream?host=HOST&client=3.4.5.6&stream=StreamName&auth=foobar Дисконнект: http://1.2.3.4:8080/auth/disconnected?host=HOST&auth=foobar
Значение параметра auth=... берётся из названия потока в методах play/publish. При этом название потока имеет вид streamname?auth=...
Если у подключенного клиента не прошла ни одна проверка доступа (в доступе отказано), то запроса disconnected при его отключении не будет.
К содержанию