Кастомизация логики операций с хранилищами данных#
Принцип кастомизации#
Blitz Identity Provider позволяет кастомизировать логику операций с хранилищами данных. Для этого используется Java-класс с фиксированным именем и пакетом com.identityblitz.idp.store.id.logic.dynamic.
Существуют восемь пользовательских процедур, по одной для каждой операции с фиксированным именем класса:
searchUser—CustomSearchUsersLogic.javagetUser—CustomGetUserLogic.javafindUser—CustomFindUserLogic.javabindUser—CustomBindUserLogic.javachangeUserPassword—CustomChangeUserPasswordLogic.javaaddUser—CustomAddUserLogic.javaupdateUser—CustomUpdateUserLogic.javadeleteUser—CustomDeleteUserLogic.java
Конфигурация#
Для того чтобы настроить пользовательскую логику для нужных операций, выполните следующие действия:
Поместите Java-файлы с пользовательской логикой в каталог:
/usr/share/identityblitz/blitz-config/dynamic/idstore/<operation_name_in_lowercase>
Например, для чтобы включить пользовательскую логику для
searchUsersиbindUser, поместите файлыCustomSearchUsersLogic.javaиCustomBindUserLogic.javaв каталоги/usr/share/identityblitz/blitz-config/dynamic/idstore/searchusersи/usr/share/identityblitz/blitz-config/dynamic/idstore/binduserсоответственно.Откройте файл конфигурации
/usr/share/identityblitz/blitz-config/blitz.conf.sudo vim /usr/share/identityblitz/blitz-config/blitz.conf
Добавьте новый блок
logicв блок конфигурацииblitz.prod.local.idp.id-stores. Блок должен содержать имена кастомизируемых операций, указанных в качестве ключа и секцию{"enabled": true}в качестве значения ключа.Кастомизация операций searchUsers и bindUser#{ "logic": { "searchUsers": { "enabled": true }, "bindUser": { "enabled": true } } }
Написание пользовательской процедуры#
Пользовательские процедуры для всех операций имеют одинаковую спецификацию, но используют собственный контекст и служебные функции. Каждый метод в процедурах соответствует определенному состоянию процесса выполнения операции. В методах необходимо реализовать логику перехода к следующему циклу (с последующим вызовом нового метода) или завершения операции.
Каждый метод в процедуре возвращает пару LoopOutput и OperationState. LoopOutput может быть:
терминальный – завершает логический цикл работы одним из следующих способов:
ошибка;
успех (результат успеха для определенной операции);
заключительная операция сохранения (выполнить операцию сохранения с некоторыми параметрами и завершить с результатом).
задача - требуется больше итераций цикла:
запрос к хранилищу на выполнение определенной операции;
запрос к внешнему веб-сервису.
На данный момент механизм работы пользовательских процедур находится на стадии бета-тестирования. Вы можете запросить подробную спецификацию Java и получить консультацию по возможностям кастомизации в своей среде у наших технических специалистов по адресу support@idblitz.ru.