Как выполнить двухэтапную авторизацию в Adminer через Postman

    Многие разработчики сталкиваются с ситуацией, когда после успешного прохождения базовой аутентификации (HTTP Basic Auth) в Postman система возвращает HTML-страницу с ещё одной формой входа. Это типично для Adminer - популярного инструмента управления базами данных. В этой статье мы подробно разберём, как правильно выполнить поэтапный вход в Adminer с помощью Postman, чтобы получить доступ к управлению БД.

    Почему Postman не запоминает первую авторизацию?

    Когда вы используете Basic Auth в Postman, заголовок Authorization отправляется с каждым запросом. Однако после успешного логина в первую форму (проверка учётных данных сервера) Adminer генерирует сессию и возвращает cookie. Вторая форма (выбор базы данных, пользователя БД и пароля) уже требует эту сессию. Если вы просто отправляете данные второй формы в теле запроса, но не передаёте полученные ранее cookie, сервер не распознаёт вас как аутентифицированного пользователя и возвращает ответ 200 с той же формой - это не ошибка, а признак того, что сессия не установлена.

    Пошаговая инструкция: двухфакторный вход в Adminer

    Шаг 1. Настройка Basic Auth и получение cookie

    В Postman создайте новый запрос. Введите URL вида https://adminer-{companyName}.ru/. На вкладке Authorization выберите тип Basic Auth и укажите логин и пароль от сервера (те, что открывают первую заглушку). Отправьте запрос. В ответе вы получите HTML второй формы, а в заголовках ответа - Set-Cookie. Скопируйте значение cookie (обычно это что-то вроде adminer_sid=abc123).

    Шаг 2. Отправка данных второй формы с cookie

    Создайте новый запрос (или используйте тот же, но измените метод на POST). Вставьте тот же URL. На вкладке Headers добавьте заголовок Cookie: adminer_sid=abc123 (подставьте своё значение). На вкладке Body выберите form-data и заполните поля, которые видите в форме:

    • auth[driver] - тип драйвера БД (например, server)
    • auth[server] - адрес сервера БД
    • auth[username] - имя пользователя БД
    • auth[password] - пароль пользователя БД
    • auth[db] - название базы данных

    Отправьте запрос. Если всё верно, вы получите HTML-страницу с интерфейсом управления выбранной базой данных (код 200).

    Автоматизация с помощью Postman Interceptor или скриптов

    Если вы часто работаете с разными базами, можно автоматизировать процесс с помощью Pre-request Script в Postman. Напишите скрипт, который сначала отправляет GET-запрос для получения cookie, сохраняет её в переменную окружения, а затем использует её при POST-запросе. Пример скрипта:

    pm.sendRequest({
        url: 'https://adminer-{companyName}.ru/',
        method: 'GET',
        header: {
            'Authorization': 'Basic ' + btoa('login:password')
        }
    }, function (err, response) {
        var cookies = response.headers.all().filter(h => h.key === 'Set-Cookie');
        if (cookies.length > 0) {
            pm.environment.set('adminer_cookie', cookies[0].value.split(';')[0]);
        }
    });

    После этого в теле запроса используйте переменную {{adminer_cookie}} в заголовке Cookie.

    Типичные ошибки и их решение

    Ошибка 401 после отправки второй формы. Проверьте, что вы передаёте правильный заголовок Cookie, полученный на первом шаге. Если cookie истекла (обычно живёт недолго), повторите шаг 1.

    Postman возвращает 200, но в ответе снова форма. Убедитесь, что вы используете метод POST, а не GET, и что все поля из формы (auth[driver], auth[server] и т.д.) заполнены корректно. Иногда требуется добавить скрытые поля, которые генерируются на странице (например, auth[permanent]).

    Cookie не сохраняется между запросами. Postman по умолчанию не автоматически сохраняет cookie из ответа. Используйте вкладку Cookies в Postman (иконка в правом верхнем углу) или добавьте заголовок вручную, как описано выше.

    Заключение

    Двухэтапная авторизация в Adminer через Postman - это несложный процесс, если понимать механизм работы сессий. Главное - правильно передать cookie после первой аутентификации и отправить данные второй формы в теле POST-запроса. Используйте скрипты для автоматизации, и вы сможете быстро переключаться между разными серверами и базами данных.

    Часто задаваемые вопросы