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: Личные учетные записи с предпочтительным типом
- Приоритет 2: Личные учетные записи с любым типом
- Приоритет 3: Групповые учетные записи с предпочтительным типом
- Приоритет 4: Групповые учетные записи с любым типом
Типы учетных записей:
login_password— логин и парольssh_key— SSH ключиapi_key— API ключиcertificate— сертификатыtoken— токены доступа
Этот эндпоинт возвращает расшифрованные учетные данные! Убедитесь, что соединение защищено HTTPS, и данные не попадают в логи или кэш.
Используйте для автоматической подстановки учетных данных. Например, приложение может запросить SSH ключ для подключения к серверу или пароль для базы данных.
Сценарии использования API
Синхронизация пользователей
Регулярно запрашивайте список пользователей через getUsers или getUsersAndOrganizations для синхронизации списка пользователей в вашем приложении с данными IDENTYX.
Рекомендуемая периодичность: каждые 5-15 минут
Централизованный аудит
Используйте putJournalEvent для отправки всех критичных событий из ваших приложений в единый журнал IDENTYX. Это позволит:
- Иметь единую точку для аудита всей инфраструктуры
- Отслеживать действия пользователей между приложениями
- Быстро реагировать на инциденты безопасности
- Соответствовать требованиям регуляторов
SSO с автоматической подстановкой учетных данных
Когда пользователь входит через OIDC и получает сессию, ваше приложение может:
- Получить
session_idиз OIDC токена - Запросить учетные записи через
getBestCredentialsForObjects - Автоматически подключиться к ресурсам от имени пользователя
Пользователь получает беспрепятственный доступ ко всем ресурсам без необходимости вводить пароли!
Мониторинг безопасности
Используйте 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"— успешное выполнение, данные в полеdatastatus: "error"— ошибка выполнения, описание в полеerror
Частые ошибки
| Ошибка | Причина | Решение |
|---|---|---|
| Приложение не найдено | Неверные client_id или client_secret | Проверьте данные приложения в настройках IDENTYX |
| Неверный API ключ | Неверный ключ для журнала безопасности | Получите актуальный ключ у администратора |
| Не указан session_id | Отсутствует обязательный параметр | Передайте session_id в запросе |
| Сессия не найдена или истекла | Неверный или устаревший session_id | Пользователь должен войти заново |
| Пользователь не найден | Указан несуществующий user_id | Проверьте корректность идентификатора |
Всегда обрабатывайте ошибки API в своем приложении. Не показывайте пользователям технические детали ошибок — используйте понятные сообщения.
Ограничения API
- Журнал безопасности: максимум 500 записей за один запрос
- События безопасности: рекомендуется до 100 событий за один запрос
- Частота запросов: не устанавливается жестко, но рекомендуется не более 1 запроса в секунду для одного приложения
Как получить API-ключ для журнала безопасности
Для доступа к журналу безопасности через API нужен специальный ключ:
- Обратитесь к администратору системы IDENTYX
- Администратор сгенерирует уникальный API-ключ в настройках системы
- Сохраните ключ в безопасном месте (переменные окружения, хранилище секретов)
- Используйте ключ в заголовке
X-API-KEYпри запросах кgetJournalData
API-ключ дает полный доступ к журналу безопасности всей системы. Храните его в секрете и не передавайте третьим лицам!
Связанные разделы
Для более глубокого понимания интеграции с IDENTYX изучите следующие разделы:
- OIDC интеграция — как интегрировать приложение через OpenID Connect
- Proxy интеграция — прозрачная аутентификация через IDENTYX Proxy
- API учетных записей — детальное описание работы с учетными данными
- Обзор журнала событий — понимание структуры журнала безопасности
- Обзор OIDC — основы протокола OpenID Connect
Переходите к разделу Разработка OIDC приложений для практических примеров интеграции.