Connections (OAuth2 на пользователя)
Connections — это способ для конкретного пользователя предоставить AiHummer доступ к стороннему сервису от своего имени. Вместо одной общей служебной учётной записи каждый человек проходит стандартный поток OAuth2 authorization-code, полученный токен запечатывается в зашифрованном vault, а во время хода (turn) рантайм резолвит токен именно этого пользователя, когда он нужен инструменту.
Это «персональная» половина модели доступов AiHummer. Полную картину — когда лучше выбрать общий доступ и как работает fallback — см. в Персональные и общие доступы.
Что такое Connection
Connection связывает три сущности: провайдер (OAuth2-приложение, против которого вы авторизуетесь), пользователь (тот, кто прошёл экран согласия) и запись в vault (где хранится выданный токен). После установления любой инструмент, действующий от имени этого пользователя, может прозрачно использовать токен — при этом токен никогда не попадает в контекст модели, в логи или в промпт.
Connections управляются из админки. В списке видно подключённые провайдеры по каждому пользователю, их статус и время последнего обновления.
Поток authorization-code
Connection создаётся каноническим трёхногим грантом OAuth2 authorization-code:
- Пользователь начинает подключение провайдера из админки.
- AiHummer перенаправляет браузер на authorization-эндпоинт провайдера с запрошенными scope.
- Пользователь подтверждает экран согласия; провайдер возвращает одноразовый authorization code.
- AiHummer обменивает этот код на access token (и, если провайдер это поддерживает, refresh token) на токен-эндпоинте провайдера.
- Токен записывается в vault, а Connection помечается активным.
Собственный токен-эндпоинт платформы:
POST /v1/oauth/token
Он выполняет обмен «код → токен» на стороне сервера, чтобы client secret и выданный токен никогда не покидали gateway.
[!NOTE] Поток authorization-code всегда включает реальный шаг согласия в браузере. Connection нельзя создать «вслепую» по одному API-ключу — действующий пользователь должен один раз подтвердить scope.
Где хранится токен
Выданный токен хранится в зашифрованном vault доступов AiHummer, а не в открытой конфигурации. Vault использует конвертное шифрование (AES-256-GCM с ключом данных на арендатора под мастер-ключом), и секреты никогда не копируются в контекст модели, в промпты или логи. Отозванный или истёкший Connection просто не оставляет пригодного к использованию секрета.
согласие ─▶ код ─▶ POST /v1/oauth/token ─▶ access/refresh token ─▶ vault (шифрованный)
Резолвится по действующему пользователю
Определяющее свойство Connection в том, что он резолвится по действующему пользователю. Когда агент вызывает инструмент, которому нужен провайдер, рантайм находит Connection, принадлежащий пользователю, от имени которого идёт ход, и использует его токен. Два сотрудника, общающиеся с одним и тем же агентом, действуют со своими авторизациями и видят только то, что разрешает их собственный грант.
Именно это делает Connections подходящими для персональных, по-пользователю интеграций: доступ каждого человека изолирован, проверяем в аудите и отзываем по отдельности.
Доступные интеграции
Через поток OAuth2 пользователь может подключить свою учётную запись в любом из поставляемых сервисов. Эти персональные интеграции доступны «из коробки»:
| Группа | Сервисы |
|---|---|
| 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 |
| Здоровье и образ жизни | Fitbit, Oura Ring, Spotify, Samsung SmartThings |
Каждая из них подключается одним и тем же authorization-code потоком: пользователь проходит экран согласия провайдера, токен запечатывается в vault и резолвится именно для этого пользователя, когда инструмент обращается к сервису.
Управление в админке
Из админки оператор может:
- Видеть, какие провайдеры подключил каждый пользователь и состояние каждого токена.
- Начать новое подключение (запустить поток согласия для выбранного провайдера).
- Отозвать подключение — это удаляет запись в vault и отключает резолвинг.
Поскольку базовые доступы персональны, Connection чаще всего и есть правильный выбор, когда действие должно быть привязано к авторизации конкретного человека и ограничено ею, а не общей учётной записью рабочего пространства.
Куда дальше
- Персональные и общие доступы — полная модель scope и когда что выбирать.
- BYOK: ключи провайдеров LLM — свои ключи модели на арендатора.
- Маркетплейс: обзор и тиры — где находятся интеграции на базе OAuth.