Вход и авторизация

Попасть в Pastukhov Agent можно несколькими способами. Через браузер — обычным входом по логину и паролю либо единым входом через сервер, когда агент открывается сам, без формы. Программно — по API-ключу для команд из других программ и через живые подключения для событий в реальном времени. Какой бы способ вы ни выбрали, агент выдаёт один и тот же «цифровой пропуск» (JWT-токен) на 90 дней — он поддерживает сеанс, пока не истечёт, повторно проходить регистрацию. Ниже — как устроен каждый способ и что для него настроить.


Самый простой способ — ввести логин и пароль на странице входа. Учётные данные задаются переменными окружения AGENT_LOGIN (логин) и AGENT_PASSWORD (пароль). Пароль хранится в виде SHA256-«отпечатка», а если переменные не заданы, приложение само сгенерирует временный пароль (логин — code) и покажет его в консоли.

Обычный вход даёт роль пользователя. Подробно о том, откуда берутся учётные данные, как задать переменные и что такое «цифровой пропуск», — на странице Начало работы.

Единый вход (SSO — от англ. single sign-on, «вошёл один раз — везде авторизован») избавляет от ввода пароля в каждый агент. Он включается, когда агент развёрнут на сервере через Pastukhov MultiAgent: на сервере ставится центральный вход (Authelia за nginx-шлюзом). Пользователь входит один раз на сервер — и каждый агент открывается сразу, без повторной авторизации.

Разобрать по шагам:

  • Шлюз пропускает только вошедших. nginx проверяет центральный вход и пропускает к агенту только авторизованных пользователей. Заодно он добавляет к запросу служебные заголовки: Remote-User (имя пользователя), Remote-Groups (группы через запятую) и X-SSO-Token (общий секрет шлюза);
  • Агент сверяет секрет. Получив запрос, агент проверяет, совпадает ли X-SSO-Token с его переменной окружения SSO_PROXY_TOKEN. Если совпадает и Remote-User непустой — агент выдаёт свой обычный «цифровой пропуск»;
  • Роль по группе. Если в Remote-Groups есть группа manager (без учёта регистра), пользователь получает роль Manager, иначе — обычного пользователя;
  • Тихий вход. При открытии приложение молча пробует этот вход (не дольше ~5 секунд). Получило токен — сразу открылось, форма входа не показывается. Если входа нет (агент работает без центрального входа или шлюз перенаправил на свою страницу) — как раньше показывается обычная форма входа.

От вас нужна единственная переменная окружения — SSO_PROXY_TOKEN с тем же секретом, что у шлюза. MultiAgent вписывает его в окружение агента при развёртывании с центральным входом. Если переменная не задана, функция полностью выключена — всё работает как раньше, с формой входа.

  • Заголовки учитываются только при совпадении секрета X-SSO-Token и SSO_PROXY_TOKEN; сравнение идёт за постоянное время, поэтому по несовпадению нельзя подобрать секрет;
  • nginx перезаписывает эти заголовки, поэтому подделать их из браузера нельзя — они добавляются только самим шлюзом;
  • Секрет не хранится в базе данных и не попадает в журналы — его нельзя прочитать изнутри системы;
  • Прямой доступ по адресу host:port (мимо шлюза) не проходит центральный вход и работает как раньше — с формой авторизации.

Чтобы другие программы управляли агентом без браузера, задайте переменную окружения AGENT_API_KEY — это SHA256-«отпечаток» ключа доступа. Программа передаёт сам ключ заголовком X-API-Key, и по нему действует роль Manager — полный доступ, как при входе менеджером. Подробности и примеры запросов — на странице API.

Живые подключения нужны, чтобы следить за событиями в чатах в реальном времени, не опрашивая сервер. Авторизация там строится на том же «цифровом пропуске» или API-ключе:

  • Интерфейс браузера при подключении передаёт свой JWT-токен параметром адреса access_token — WebSocket-соединение не умеет заголовки;
  • Внешние программы передают тот же API-ключ — заголовком X-API-Key или параметром адреса api_key (для WebSocket параметр адреса обязателен, так как заголовки задать нельзя).

Подробности о живых событиях и авторизации — на странице API.

Коротко о каждом способе — когда он нужен и чем подтверждается доступ:

СпособКогда используетсяЧем подтверждаетсяПодробнее
Обычный входвход в интерфейс по логину и паролюAGENT_LOGIN / AGENT_PASSWORDНачало работы
Единый вход (SSO)интерфейс за шлюзом MultiAgent-серверазаголовки шлюза + секрет SSO_PROXY_TOKENэта статья
Вход менеджеромвнешнее управление флотом из MultiAgentMANAGER_PASSWORDAPI
API-ключкоманды из других программX-API-Key / AGENT_API_KEYAPI
Живые подключениясобытия в реальном временитокен access_token или api_keyAPI
  • Начало работы — установка, учётные данные и первый вход;
  • API — программный доступ: команды, живая подписка и авторизация по ключу;
  • Модели — переменные окружения, включая ключи и секреты.
  • Обвязки — вход в ИИ по подписке Claude (Pro/Max): это оплата ИИ, а не доступ в сам агент.

← Назад: Метки чатов

Далее: API →