AiHummer
Русский
ВойтиЛичный кабинет
v1.1.x
{ }Swagger

Подключения пользователей через OAuth 2.0

v1.1.x · обновлено 2026-07-21

Подключения (Connections) — это способ для конкретного пользователя предоставить AiHummer доступ к стороннему сервису от своего имени. Вместо одной общей служебной учётной записи каждый человек проходит стандартный поток OAuth 2.0 Authorization Code, полученный токен запечатывается в зашифрованном хранилище секретов, а во время обработки запроса среда выполнения выбирает токен именно этого пользователя, когда он нужен инструменту.

Это «персональная» половина модели доступов AiHummer. Полную картину — когда лучше выбрать общий доступ и как работает резервный вариант — см. в Персональные и общие доступы.

Что такое подключение

Подключение связывает три сущности: провайдер (сторонний сервис, в котором пользователь проходит авторизацию), пользователь (тот, кто прошёл экран согласия) и запись в хранилище секретов (где хранится выданный токен). После установления любой инструмент, действующий от имени этого пользователя, может прозрачно использовать токен — при этом токен никогда не попадает в контекст модели, в журналы или в промпт.

Подключения управляются из админ-панели. В списке видно подключённые провайдеры по каждому пользователю, их статус и время последнего обновления.

Поток authorization-code

Подключение создаётся стандартным потоком OAuth 2.0 Authorization Code с участием пользователя:

  1. Пользователь начинает подключение провайдера из админ-панели — запросом POST/GET /v1/admin/connections/oauth/start.
  2. AiHummer перенаправляет браузер на authorization-endpoint провайдера с запрошенным набором прав (в протоколе — scope).
  3. Пользователь подтверждает экран согласия; провайдер возвращает одноразовый authorization code на /v1/admin/connections/oauth/callback.
  4. Внутри обработчика callback AiHummer на стороне сервера обменивает этот код на access token (и, если провайдер это поддерживает, refresh token) на токен-endpoint провайдера.
  5. Токен записывается в хранилище секретов, а подключение помечается активным.

Обмен «код → токен» выполняется на стороне сервера внутри callback, чтобы client secret и выданный токен никогда не покидали gateway.

[!NOTE] Не путайте этот поток с POST /v1/oauth/token: это собственный OAuth2-endpoint AiHummer с грантом client-credentials — служебные аккаунты, зарегистрированные через /v1/admin/apikeys/register-client, обменивают на нём свои client_id/client_secret на короткоживущий токен ah-. К подключениям со сторонними провайдерами он отношения не имеет.

[!NOTE] Поток authorization-code всегда включает реальный шаг согласия в браузере. Подключение нельзя создать «вслепую» по одному API-ключу — действующий пользователь должен один раз подтвердить набор запрошенных прав.

Где хранится токен

Выданный токен хранится в зашифрованном хранилище секретов AiHummer, а не в открытой конфигурации. Хранилище использует конвертное шифрование (AES-256-GCM с ключом данных на арендатора под мастер-ключом), и секреты не копируются в контекст модели, в промпты или журналы. Отозванное или истёкшее подключение просто не оставляет пригодного к использованию секрета.

oauth/start ─▶ согласие ─▶ код ─▶ oauth/callback (обмен у провайдера) ─▶ access/refresh token ─▶ vault (шифрованный)

Выбирается по действующему пользователю

Определяющее свойство подключения в том, что оно выбирается по действующему пользователю. Когда агент вызывает инструмент, которому нужен провайдер, среда выполнения находит подключение, принадлежащее пользователю, от имени которого обрабатывается запрос, и использует его токен. Два сотрудника, общающиеся с одним и тем же агентом, действуют со своими авторизациями и видят только то, что разрешает их собственный грант.

Именно это делает подключения подходящими для персональных, по-пользователю интеграций: доступ каждого человека изолирован, проверяем в аудите и отзываем по отдельности.

Доступные интеграции

Через поток OAuth2 пользователь может подключить свою учётную запись в любом из поставляемых сервисов. Эти персональные интеграции доступны «из коробки»:

Группа Сервисы
Google Gmail, Google Calendar, Google Contacts, Google Tasks, Google Drive, YouTube
Microsoft Outlook Mail, Outlook Calendar, OneDrive, Microsoft To Do
Продуктивность Todoist, Asana, Jira Cloud, ClickUp, GitLab, Linear, monday.com
Здоровье и образ жизни Fitbit, Oura Ring, Strava, Spotify, Samsung SmartThings

Каждая из них подключается одним и тем же authorization-code потоком: пользователь проходит экран согласия провайдера, токен запечатывается в хранилище секретов и выбирается именно для этого пользователя, когда инструмент обращается к сервису.

Управление в админ-панели

Из админ-панели оператор может:

  • Видеть, какие провайдеры подключил каждый пользователь и состояние каждого токена.
  • Начать новое подключение (запустить поток согласия для выбранного провайдера).
  • Отозвать подключение — это удаляет запись в хранилище секретов, и токен перестаёт выбираться для инструментов.

Подключения бывают персональными (принадлежат конкретному пользователю; он сам может их отключить) и общими для рабочего пространства (помечены тегом «Workspace shared»; персонально их отключить нельзя). К одному провайдеру можно привязать несколько аккаунтов: кнопка «+ аккаунт» запрашивает подпись (label) и сохраняет ещё одну учётную запись того же провайдера — например, несколько календарей Google или почтовых ящиков.

Поскольку базовые доступы персональны, подключение чаще всего и есть правильный выбор, когда действие должно быть привязано к авторизации конкретного человека и ограничено ею, а не общей учётной записью рабочего пространства.

Куда дальше