REST API документация

ℹ️ О разделе

IDENTYX предоставляет REST API для интеграции с внешними приложениями. Через API можно получать данные о пользователях, организациях, журнале безопасности и работать с учетными записями.

Обзор возможностей API

API системы IDENTYX позволяет интегрированным приложениям получать доступ к следующим данным и функциям:

👥 Пользователи

Получение списка пользователей с доступом к приложению:

  • Идентификаторы пользователей
  • Имена и email
  • Права доступа (permissions)
  • Группы пользователей
🏢 Организации

Получение списка активных организаций:

  • Идентификаторы организаций
  • Названия организаций
  • Структура организаций
📝 Журнал безопасности

Работа с событиями безопасности:

  • Получение событий с фильтрацией
  • Добавление событий из приложений
  • Централизованный аудит
  • Поиск по параметрам
🔑 Учетные записи

Доступ к сохраненным учетным записям:

  • Личные учетные записи
  • Групповые учетные записи
  • Автоматический выбор по типу
  • Шифрованная передача

Аутентификация в API

Для работы с API используются следующие методы аутентификации:

Аутентификация приложения (client_id + client_secret)

Большинство API эндпоинтов требуют аутентификации через идентификатор приложения и секретный ключ. Эти данные вы получаете при создании OIDC приложения в IDENTYX:

  • client_id — уникальный идентификатор вашего приложения
  • client_secret — секретный ключ для безопасного доступа
⚠️ Безопасность

Храните client_secret в секрете! Никогда не передавайте его в клиентском коде или публичных репозиториях. Используйте его только на стороне сервера.

Аутентификация через API-ключ

Для доступа к журналу безопасности используется специальный API-ключ, который передается в заголовке запроса X-API-KEY. Этот ключ генерируется администратором системы в настройках.

Аутентификация через сессию OIDC

Для получения учетных записей пользователя используется идентификатор активной OIDC сессии. Этот способ применяется когда приложение хочет получить учетные данные от имени конкретного авторизованного пользователя.

Доступные API эндпоинты

Получение списка пользователей

Эндпоинт getUsers возвращает список всех пользователей, имеющих доступ к вашему приложению.

Что возвращается:

  • Идентификатор пользователя (sub)
  • Отображаемое имя (name)
  • Имя пользователя (username)
  • Email адрес (email)
  • Права доступа (permissions) — массив прав в формате /объект:/действие
  • Дата создания и обновления
ℹ️ Применение

Используйте этот эндпоинт для синхронизации списка пользователей между IDENTYX и вашим приложением. Например, для обновления локального кэша пользователей или построения списков доступа.

Получение списка организаций

Эндпоинт getOrganizations возвращает список всех активных организаций в системе.

Что возвращается:

  • Идентификатор организации (id)
  • Название организации (title)
ℹ️ Применение

Используйте для синхронизации организационной структуры между системами или для построения фильтров по организациям в вашем приложении.

Комбинированный запрос пользователей и организаций

Эндпоинт getUsersAndOrganizations позволяет получить данные о пользователях и организациях одним запросом. Это удобнее и быстрее, чем делать два отдельных запроса.

✅ Рекомендация

Используйте этот эндпоинт вместо двух отдельных запросов getUsers и getOrganizations для повышения производительности.

Получение журнала безопасности

Эндпоинт getJournalData позволяет получить события из журнала безопасности IDENTYX с расширенными возможностями фильтрации и поиска.

Возможности фильтрации:

  • По идентификатору события
  • По приложению
  • По пользователю
  • По IP-адресу (частичное совпадение)
  • По коду события
  • По тексту события (частичное совпадение)
  • По результату (успех/ошибка)
  • По диапазону дат

Возможности сортировки:

  • По любому полю (ID, дата, приложение, пользователь, IP, код, текст, результат)
  • По возрастанию или убыванию

Пагинация:

  • Можно указать номер страницы и количество записей на странице
  • Максимум 500 записей за один запрос
  • По умолчанию 50 записей на странице
ℹ️ Применение

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

Добавление событий в журнал

Эндпоинт putJournalEvent позволяет внешним приложениям добавлять события безопасности в централизованный журнал IDENTYX.

Что можно логировать:

  • События аутентификации — входы и выходы пользователей
  • Доступ к данным — просмотр, изменение, удаление
  • Административные действия — изменения конфигурации
  • Ошибки и угрозы — неудачные попытки, подозрительная активность
  • Использование API — обращения к критичным эндпоинтам

Коды событий:

Система использует стандартные коды для классификации событий:

Код Категория Примеры использования
132 Успешная аутентификация Пользователь успешно вошел в систему
133 Неуспешная аутентификация Неверный пароль, блокировка
112 Использование API Запросы к API, получение данных
113 Доступ к данным Чтение, изменение, экспорт данных
114 Угроза безопасности Подозрительная активность, атаки
103 Управление пользователями Создание, изменение, удаление
107 Управление сессиями Открытие, закрытие сессий
✅ Лучшая практика

Логируйте все критичные действия в вашем приложении. Это позволит иметь централизованный журнал аудита для всей инфраструктуры и упростит расследование инцидентов безопасности.

Получение объектов с учетными записями

Эндпоинт getUserObjectsWithCredentials возвращает список объектов (путей в дереве приложения), для которых у пользователя есть сохраненные учетные записи.

Параметры:

  • user_id — идентификатор пользователя
  • include_group_credentials — включить ли групповые учетные записи (по умолчанию true)

Что возвращается:

  • Массив путей к объектам (например: /servers/web01, /databases/mysql01)
  • Корневой объект обозначается как /
ℹ️ Применение

Используйте для определения, к каким ресурсам у пользователя есть сохраненные учетные данные. Это позволит показать пользователю список доступных ресурсов.

Получение лучших учетных записей для объектов

Эндпоинт getBestCredentialsForObjects — самый мощный способ работы с учетными записями. Он принимает список объектов и возвращает наиболее подходящую учетную запись для каждого из них.

Как работает приоритизация:

  1. Приоритет 1: Личные учетные записи с предпочтительным типом
  2. Приоритет 2: Личные учетные записи с любым типом
  3. Приоритет 3: Групповые учетные записи с предпочтительным типом
  4. Приоритет 4: Групповые учетные записи с любым типом

Типы учетных записей:

  • login_password — логин и пароль
  • ssh_key — SSH ключи
  • api_key — API ключи
  • certificate — сертификаты
  • token — токены доступа
⚠️ Безопасность

Этот эндпоинт возвращает расшифрованные учетные данные! Убедитесь, что соединение защищено HTTPS, и данные не попадают в логи или кэш.

ℹ️ Применение

Используйте для автоматической подстановки учетных данных. Например, приложение может запросить SSH ключ для подключения к серверу или пароль для базы данных.

Сценарии использования API

Синхронизация пользователей

Регулярно запрашивайте список пользователей через getUsers или getUsersAndOrganizations для синхронизации списка пользователей в вашем приложении с данными IDENTYX.

Рекомендуемая периодичность: каждые 5-15 минут

Централизованный аудит

Используйте putJournalEvent для отправки всех критичных событий из ваших приложений в единый журнал IDENTYX. Это позволит:

  • Иметь единую точку для аудита всей инфраструктуры
  • Отслеживать действия пользователей между приложениями
  • Быстро реагировать на инциденты безопасности
  • Соответствовать требованиям регуляторов

SSO с автоматической подстановкой учетных данных

Когда пользователь входит через OIDC и получает сессию, ваше приложение может:

  1. Получить session_id из OIDC токена
  2. Запросить учетные записи через getBestCredentialsForObjects
  3. Автоматически подключиться к ресурсам от имени пользователя

Пользователь получает беспрепятственный доступ ко всем ресурсам без необходимости вводить пароли!

Мониторинг безопасности

Используйте getJournalData для построения дашбордов безопасности:

  • Отслеживание неудачных попыток входа
  • Мониторинг активности пользователей
  • Анализ географии подключений (по IP)
  • Выявление аномальной активности

Безопасность при работе с API

🔐 Защита секретов
  • Храните client_secret в переменных окружения
  • Никогда не передавайте секреты в клиентском коде
  • Используйте системы управления секретами
  • Регулярно ротируйте секретные ключи
🌐 Защита соединения
  • Всегда используйте HTTPS для API запросов
  • Проверяйте SSL сертификаты
  • Не отключайте проверку сертификатов
  • Используйте современные версии TLS
📝 Логирование
  • Логируйте все обращения к API
  • Не логируйте учетные данные и токены
  • Отслеживайте аномальную активность
  • Настройте оповещения о подозрительных запросах
⚡ Ограничение частоты
  • Не делайте слишком частые запросы
  • Используйте кэширование данных
  • Оптимизируйте количество запросов
  • Используйте комбинированные эндпоинты

Оптимизация производительности

Кэширование данных

Рекомендуемое время кэширования для разных типов данных:

Тип данных Рекомендуемое время кэша Причина
Список пользователей 5-15 минут Редко меняется, но требует актуальности
Список организаций 15-30 минут Меняется очень редко
Учетные записи 1-5 минут Может потребоваться быстрое обновление
Журнал безопасности (чтение) Не кэшировать Требуется актуальность в реальном времени

Объединение запросов

Вместо:

  • Отдельный запрос getUsers
  • Отдельный запрос getOrganizations

Используйте:

  • Один запрос getUsersAndOrganizations

Это снижает нагрузку на сеть и ускоряет получение данных!

Асинхронное логирование

При отправке событий через putJournalEvent:

  • Не блокируйте основной процесс приложения
  • Используйте очереди сообщений для асинхронной отправки
  • Группируйте события и отправляйте пакетами
  • Не отправляйте более 100 событий за один запрос

Обработка ошибок

Все API эндпоинты возвращают результат в формате JSON с полем status:

  • status: "success" — успешное выполнение, данные в поле data
  • status: "error" — ошибка выполнения, описание в поле error

Частые ошибки

Ошибка Причина Решение
Приложение не найдено Неверные client_id или client_secret Проверьте данные приложения в настройках IDENTYX
Неверный API ключ Неверный ключ для журнала безопасности Получите актуальный ключ у администратора
Не указан session_id Отсутствует обязательный параметр Передайте session_id в запросе
Сессия не найдена или истекла Неверный или устаревший session_id Пользователь должен войти заново
Пользователь не найден Указан несуществующий user_id Проверьте корректность идентификатора
⚠️ Рекомендация

Всегда обрабатывайте ошибки API в своем приложении. Не показывайте пользователям технические детали ошибок — используйте понятные сообщения.

Ограничения API

  • Журнал безопасности: максимум 500 записей за один запрос
  • События безопасности: рекомендуется до 100 событий за один запрос
  • Частота запросов: не устанавливается жестко, но рекомендуется не более 1 запроса в секунду для одного приложения

Как получить API-ключ для журнала безопасности

Для доступа к журналу безопасности через API нужен специальный ключ:

  1. Обратитесь к администратору системы IDENTYX
  2. Администратор сгенерирует уникальный API-ключ в настройках системы
  3. Сохраните ключ в безопасном месте (переменные окружения, хранилище секретов)
  4. Используйте ключ в заголовке X-API-KEY при запросах к getJournalData
🚫 Важно!

API-ключ дает полный доступ к журналу безопасности всей системы. Храните его в секрете и не передавайте третьим лицам!

Для более глубокого понимания интеграции с IDENTYX изучите следующие разделы:

✅ Готовы к разработке?

Переходите к разделу Разработка OIDC приложений для практических примеров интеграции.