Настроил все по инструкции, как описано в документации:
https://erlyvideo.ru/doc/auth/securelink
Но embed.html показывает 403 ошибку. Как отладить? В чем может быть проблема?
Настроил все по инструкции, как описано в документации:
https://erlyvideo.ru/doc/auth/securelink
Но embed.html показывает 403 ошибку. Как отладить? В чем может быть проблема?
Есть два ключевых момента:
Поясню. Токены имеют срок жизни, если на сервере время неправильное, то токены все равно будут “просрочены”. Убедитесь, что ntpd запущен на всех серверах.
Оба сервера должны видеть “внешний” адрес клиента, т.к. механизм securetoken отслеживает IP-адрес для защиты от “расшаривания” видео. При проверке токена сверяются адреса и из-за несовпадения выдает 403 ошибка.
Примеры:
Это две основные причины.
Спасибо за ответ, но время на серверах правильное, а IP-адреса определяются верно (я вывел на сайт переменную $ipaddr), а в логе флюссоника (flussonic.log) видно тот же адрес, что и на сайте.
Дважды перепроверил - все правильно настроил, но, увы, не завелось.
Остается только выставить уровень логирования в debug (это делается через админку Flussonic) и внимательно смотреть в логи. Покажете тут flussonic.log в момент открытия страницы защищенной с помощью securetoken?
Вот что получилось:
2018-07-24 14:09:45.182 <0.20421.629> [camera-office] flu_session:283 Backend auth request "/etc/flussonic/securetoken.lua" ([{token,<<"t511bf16d223651bf2167e8b5894ead587782543-9ac982dcc106877b8617a9b90a4704bb-1532445026-1532441426">>},
{name,<<"camera-office">>},
{ip,<<"223.42.69.162">>},
{type,<<"jpeg">>}],#{key => <<"z76532b0wwegb">>},[{request_type,new_session},
{duration,0},
{stream_clients,0},
{total_clients,198},
{session_id,<<"5518a43d374dd6f603d53a76707f74202e89fdc3">>},
{country,<<"RU">>},
{user_name,<<"camera-office">>},
{port,8080},
{qs,<<"&token=t511bf16d223651bf2167e8b5894ead587782543-9ac982dcc106877b8617a9b9"...>>},
{host,<<"100.165.49.38:8080">>},
{user_agent,<<"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)">>},
{media_request,<<"live_stream-preview_jpeg">>}]): Code: false, time, 6ms
В токене время старта 1532441426 (Jul 2018 14:10:26 +0000), а по времени сервера, клиент начинает просмотр в 14:09:45.182, получается несостыковка примерно на 25 секунд. Это важно.
Получается, клиент начинает пытается использовать токен, срок жизни которого в будущем. Вы можете подтвердить это, просто подождав 30 секунд после загрузки страницы с видео - проигрывание заработает.
Как поправить? Синхронизировать время.
На самом деле, поддержка времени секунду-в-секунду может быть не очень простой задачей, поэтому можно внести в код сайта изменение, которое вносит специально “смещение” во времени (из текущего времени вычесть 5 минут, тогда время сможет разбегаться без ущерба для просмотра.
Для вас я написал более подробную статью по работе securetoken и дополнил ее примерами на двух языках (PHP, Ruby), учитывающими рассинхронизацию времени:
https://erlyvideo.ru/doc/auth/securelink-alt
Заработало! Спасибо за помощь, подобная информация должна быть на сайте в документации, а не прятаться на форуме.