Кастомизация логики операций с хранилищами данных#
Принцип кастомизации#
Blitz Identity Provider позволяет кастомизировать логику операций с хранилищами данных. Для этого используется Java-класс с фиксированным именем и пакетом com.identityblitz.idp.store.id.logic.dynamic
.
Существуют восемь пользовательских процедур, по одной для каждой операции с фиксированным именем класса:
searchUser
—CustomSearchUsersLogic.java
getUser
—CustomGetUserLogic.java
findUser
—CustomFindUserLogic.java
bindUser
—CustomBindUserLogic.java
changeUserPassword
—CustomChangeUserPasswordLogic.java
addUser
—CustomAddUserLogic.java
updateUser
—CustomUpdateUserLogic.java
deleteUser
—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}
в качестве значения ключа.{ "logic": { "searchUsers": { "enabled": true }, "bindUser": { "enabled": true } } }
Написание пользовательской процедуры#
Пользовательские процедуры для всех операций имеют одинаковую спецификацию, но используют собственный контекст и служебные функции. Каждый метод в процедурах соответствует определенному состоянию процесса выполнения операции. В методах необходимо реализовать логику перехода к следующему циклу (с последующим вызовом нового метода) или завершения операции.
Каждый метод в процедуре возвращает пару LoopOutput
и OperationState
. LoopOutput
может быть:
терминальный – завершает логический цикл работы одним из следующих способов:
ошибка;
успех (результат успеха для определенной операции);
заключительная операция сохранения (выполнить операцию сохранения с некоторыми параметрами и завершить с результатом).
задача - требуется больше итераций цикла:
запрос к хранилищу на выполнение определенной операции;
запрос к внешнему веб-сервису.
На данный момент механизм работы пользовательских процедур находится на стадии бета-тестирования. Вы можете запросить подробную спецификацию Java и получить консультацию по возможностям кастомизации в своей среде у наших технических специалистов по адресу support@idblitz.ru.