А ваш IDM умеет играть в шахматы?
Введение
OpenIDM управляет жизненным циклом учетных записей в организации. Автоматизирует процессы приема на работу, администрирования, управления привилегиями, увольнения. Может синхронизировать изменения в учетных записях во множестве корпоративных систем.
В OpenIDM возможно настраивать произвольные процессы (workflow) в соответствии с нотацией BPMN2, а так же создавать произвольный интерфейс пользователя в соответствии с нуждами организации.
Но настроить какой-нибудь типовой процесс было бы скучно, тем, более возможности OpenIDM позволяют это сделать максимально гибко. И в этой статье в качестве примера мы рассмотрим рабочий процесс игры в шахматы.
Запуск OpenIDM
Из бинарной поставки
Выполните последовательно следующие команды:
Получить последнюю версию OpenIDM
$ export VERSION=$(curl -i -o - --silent | grep -m1 "\\"name\\"" | cut -d\\" -f4); echo "Last version: $VERSION"
Last version: 6.2.3
Загрузить бинарную поставку OpenIDM
$ curl -L --output openidm.zip
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 92.1M 100 92.1M 0 0 9421k 0 0:00:10 0:00:10 --:--:-- 9926k
Разархивировать бинарную поставку OpenIDM
$ unzip openidm.zip
Archive: openidm.zip
creating: openidm/
....
Запустить OpenIDM
$ openidm/startup.sh -p samples/workflow
Executing openidm/startup.sh...
Using OPENIDM_HOME: /tmp/openidm
Using PROJECT_HOME: /tmp/openidm/samples/getting-started
Using OPENIDM_OPTS: -Dlogback.configurationFile=conf/logging-config.groovy
Using LOGGING_CONFIG: -Djava.util.logging.config.file=/tmp/openidm/samples/getting-started/conf/logging.properties
Using boot properties at /tmp/openidm/samples/getting-started/conf/boot/boot.properties
-> OpenIDM version "6.2.3" (revision: 284a4) 2024-11-11T09:18:27Z master
OpenIDM ready
Из образа Docker
$ docker run -h idm-01.domain.com -p 8080:8080 -p 8443:8443 --name idm-01 openidentityplatform/openidm -p samples/workflow
Unable to find image 'openidentityplatform/openidm:latest' locally
latest: Pulling from openidentityplatform/openidm
74ac377868f8: Already exists
a182a611d05b: Already exists
e58ce1bd2f23: Already exists
e1b7fbdee987: Already exists
4f4fb700ef54: Already exists
26716adeef7f: Pull complete
Digest: sha256:6a6df88ca40116de4bba7ddef126a214feee04e7161b0d6f39ff9c9f448cda94
Status: Downloaded newer image for openidentityplatform/openidm:latest
Executing /opt/openidm/startup.sh...
Using OPENIDM_HOME: /opt/openidm
Using PROJECT_HOME: /opt/openidm/samples/getting-started
Using OPENIDM_OPTS: -server -XX:+UseContainerSupport -Dlogback.configurationFile=conf/logging-config.groovy
Using LOGGING_CONFIG: -Djava.util.logging.config.file=/opt/openidm/samples/getting-started/conf/logging.properties
Using boot properties at /opt/openidm/samples/getting-started/conf/boot/boot.properties
ShellTUI: No standard input...exiting.
OpenIDM version "6.2.3" (revision: 284a4) 2024-11-11T09:18:27Z master
OpenIDM ready
Начальная настройка OpenIDM
Откройте консоль администратора OpenIDM по ссылке http://localhost:8080/admin. Введите логин и пароль администратора. По умолчанию логин openidm-admin
, пароль openidm-admin
.
В основном меню перейдите Manage → Processes. Далее перейдите на закладку Definitions. И убедитесь, что в списке есть процесс Start a Game of Chess!
.
Вы можете посмотреть, как выглядит рабочий процесс, кликнув на него.
Теперь давайте создадим пользователя, с которым администратор будет играть в шахматы.
В консоли администратора в основном меню перейдите Manage → User. Создайте учетную запись. Пусть, для примера, это будет учетная запись с логином jdoe
.
Перейдите на закладку пароль и введите пароль для учетной записи. Нажмите кнопку Save
.
Игра в шахматы
Зайдите в консоль с учетной записью openidm-admin
по ссылке http://localhost:8080. На экране Dashboard в разделе Processes будет пункт Start a Game of Chess!
. Нажмите на ссылку Details
Появится шахматная доска. Нажмите кнопку Start
. Будет создана новая игра. Вы можете назначить игру на себя и играть с самим собой или подождать, когда кто-нибудь из пользователей примет ваше приглашение к игре.
Откройте другой браузер или новое окно в режиме инкогнито и войдите с учетной записью jdoe
.
На странице Dashboard вы увидите приглашение к игре. Назначьте игру на себя, сделайте первый ход и нажмите кнопку Complete
.
Задача исчезнет из списка. Теперь перейдите в окно с аутентифицированным пользователем openidm-admin
и обновите список задач. Вам будет предложено сделать ответный ход. Сделайте ход и нажмите кнопку Complete
. Теперь перейдите снова в окно с пользователем jdoe
. Для пользователя появится новая задача с предложением сделать свой ход. Таким образом, пользователи OpenIDM могут играть между собой в шахматы.
Немного технических деталей
Теперь давайте разберем, как это устроено. Workflow в формате BPMN хранится в каталоге samples/workflow/workflow
в архиве chess.bar
Посмотреть его вы можете при помощи команды.
$ unzip -p samples/workflow/workflow/chess.bar chess.bpmn20.xml | less
В этом же архиве хранится и интерфейс пользователя — шахматная доска.
unzip -p samples/workflow/workflow/chess.bar chessboard.xhtml | less
По аналогии вы можете создать свой workflow и интерфейс пользователя. После создайте bar архив командой
$ jar cvf chess.bar your-bpmn.xml your-ui.xhtml
И поместите его в каталог workflow
OpenIDM.
Более подробно про настройку рабочих процессов вы можете прочитать в документации к OpenIG здесь и здесь.