Привет, мне нужно, чтобы нетехнические сотрудники имели доступ к определенным частям webfig. Сделал быструю веб-страницу в качестве "панели управления" для нескольких RBs, со ссылкой на webfig для каждого. Примерно так: http://username:password@10.1.60.2/webfig/#IP:DHCP_Server.Leases Но всё равно я получаю только страницу входа в webfig. Есть ли способ сделать автологин рабочим? И можно ли как-то показывать только определенные части, например, аренды DHCP-сервера, не показывая всё меню? С уважением.
В данный момент администратор автоматически входит в webfig без пароля. Настрой подходящую тему оформления для администратора (и не забудь предоставить ему права на чтение).
Похожая проблема. Ещё вопрос: у меня есть пользователь без пароля, могу ли я создать какой-нибудь URL, который будет указывать имя пользователя для входа? Например, http://RouterOS.example.com/webfig/#Tools:Ping?login=testonly. В общем, я хотел бы иметь URL-ссылку на страницу webfig, которая не перенаправляет на вход. Пытался использовать веб-сервер между RouterOS и браузером для организации входа, но даже это не сработало. Поскольку для входа используется веб-страница, нам не удалось найти элегантный способ получения страницы webfig с веб-сервера, чтобы обойти это ограничение. Понимаю, что Basic Auth не работает. И получается, что X.509 client тоже не подходит для доступа к webfig, так как это тоже решило бы мою проблему? Какие-нибудь идеи?
Я не уверен, что есть способ сделать это без использования контейнера с HTTP-прокси и пользовательским кодом, имитирующим вход в webfig. Предложение 2013 года использовать "admin" без пароля (и в группе чтения) вполне закономерно больше не работает.
Похоже, какой-нибудь headless browser можно использовать для проксификации запросов, который сможет корректно обработать страницу логина с её JS, шифрующим пароль для полезной нагрузки в POST /jsporxy. Webfig не принимает basic auth, поэтому учетные данные нельзя использовать в URL.
Если я не ошибаюсь: при открытии страницы входа в Webfig RouterOS устанавливает cookie с хэшем в браузере, когда вы отправляете имя пользователя и пароль. Данные закодированы с помощью алгоритма "Curve25519", и этот хэш в cookie используется для шифрования данных перед отправкой…
При проверке в браузере вижу только имя пользователя, установленное в cookie, а остальные хранилища сайта пусты (кэш, локальное хранилище, сеансовое хранилище…): Похоже, пароль отправляется при первом POST-запросе и получает сессионный ключ, который шифрует остальные данные, но я не проверял JS, чтобы быть уверенным.
Я не вдавалась в подробности, но суть в том, что данные зашифрованы, войти с помощью простого клика по ссылке невозможно, даже если она содержит имя пользователя и пароль…
Да, я писал об этом раньше: базовая авторизация (схема авторизации URL) не принимается, но, возможно, через проксирование с использованием headless браузера это можно будет реализовать. Также очевидно, что сессия не сохраняется в хранилище браузера, потому что при открытии новой вкладки или окна он всегда запрашивает пароль.
Основная проблема в том, что webfig по сути - это JS, который динамически генерирует html и использует window.sessionStore для хранения/извлечения имени пользователя и пароля в сессии браузера. И поэтому авторизация сбрасывается в новой вкладке, как @optio и предполагает. И это не какое-то простое "одним кликом", как уже @rextended отмечает. И это сложнее, чем простой прокси, чем я изначально предполагал — в браузере нужно делать кое-какие вещи для установки авторизации (например, я думал, что используются куки, которые можно управлять через прокси, так что не повезло). Но в webfig есть какой-то код для решения этой проблемы, но сначала нужно установить sessionStore: function autoLogin() { const user = window.sessionStorage.getItem("name"); if (user) { doAuth(user, window.sessionStorage.getItem("password")); window.sessionStorage.clear(); } else if (window.name) { const [method, loginData] = window.name.split(/=(.*)/s); window.name = ""; if (["login", "autologin"].includes(method) && loginData) { const [user, pwd] = loginData.split(/\|(.*)/s); doAuth(user, pwd); } } else logout(); } В итоге я просто использовал REST и собственную страницу статуса, чтобы не заморачиваться с этим. Но возможность повторно использовать “страницу статуса” webfig (и карту Dude тоже) без необходимости авторизации в браузере была бы очень кстати.
Просто так войти, кликнув на ссылку, не получится, независимо от того, содержит она имя пользователя и пароль или нет… Все к чему сводится дело, это то, что это не так уж и просто.
Ну, так, как это было написано, мне показалось, что я убедилась, что это просто один клик… Лучше: И это не какой-то простой "одноклик", как уже @rextended отметил.
Есть несколько фреймворков, которые можно использовать, например, Puppeteer для NodeJS, но они требуют разработки кастомного HTTP-сервиса, который оборачивает запросы для Webfig и перехватывает логин. Универсального решения, насколько я знаю, нет.