Области доступа и изоляция аккаунтов
Аутентификация определяет, какой именно бэкенд-сервис подключается. Авторизация определяет, какие действия этот сервис может выполнять и в каком именно аккаунте. Frigolive разделяет эти два решения и заново проверяет оба при каждом входящем запросе.
Трехуровневая проверка
- Список разрешенных аккаунтов учетной записи (allow-list): интеграция может обращаться только к тем реальным клиентским аккаунтам, к которым ей явно открыт доступ.
- Области доступа токена (scopes): права на чтение и запись разделены для каждого ресурса.
- Принадлежность ресурса тенанту: запрашиваемый ресурс должен действительно принадлежать выбранному аккаунту.
Успешного прохождения только одной проверки недостаточно. Токен с правами на чтение устройств все равно не сможет получить доступ к устройству, принадлежащему аккаунту вне его разрешенного списка.
Заголовок для работы с несколькими аккаунтами (X-Frigolive-Account-ID)
Одна учетная запись может быть открыта для нескольких реальных аккаунтов внутри группы компаний.
В этом случае каждый запрос данных явно указывает целевой аккаунт через заголовок X-Frigolive-Account-ID.
Public API охватывает только официальные эндпоинты, предназначенные для обмена данными между клиентами и их собственными системами. Проверки безопасности и прав доступа выполняются независимо для каждого запроса.
Группы прав доступа
Следующие группы ресурсов могут быть предоставлены независимо:
- Аккаунты:
accounts:read,accounts:write - Локации:
locations:read,locations:write - Перевозчики:
carriers:read,carriers:write - Получатели:
receivers:read,receivers:write - Шаблоны оповещений:
alert-presets:read,alert-presets:write - Шаблоны отправок:
shipment-templates:read,shipment-templates:write - Устройства:
devices:read,devices:label:write,devices:settings:write - Телеметрия и обслуживание:
telemetry:read,maintenance:read - Отправки:
shipments:read,shipments:write,shipments:complete,shipments:share,shipments:tracking:read - Тревоги и отчеты:
alarms:read,alarms:write,reports:read - Пользователи:
users:read,users:write,users:invite
Наиболее надежный подход при интеграции — запрашивать минимальный набор областей доступа (principle of least privilege), который действительно необходим. Например, интеграции, которая только отображает карту, не требуются права на приглашение пользователей или удаление отправок.