Отримання ролей користувача з Keycloak: Get Keycloak roles from user

Цей документ пояснює, як отримати системні та реєстрові ролі користувача з Keycloak у бізнес-процесі.

1. Загальна інформація

Інтеграційне розширення Get Keycloak roles from user дозволяє вам отримати ролі користувача з певного Keycloak-реалму за userName.

Таблиця 1. Короткі відомості про делегат
Назва Пояснення

Бізнес-назва інтеграційного розширення

Get Keycloak roles from user

Службова назва інтеграційного розширення

${keycloakGetUserRoleConnectorDelegate}

Назва файлу в бібліотеці розширень

keycloakGetUserRoleConnectorDelegate.json

2. Перед початком

Якщо ви використовуєте функціональність Кабінету адміністратора регламентів для розробки реєстру, вам не потрібно встановлювати типові розширення, додаткові зовнішні застосунки та плагіни. Портал містить усе необхідне вбудоване з коробки.

При моделюванні бізнес-процесів із використанням сторонніх застосунків, важливо інтегрувати каталог типових розширень з нашого репозиторію. Завітайте до business-process-modeler-extensions, щоб завантажити необхідні файли. Наприклад, для таких інструментів, як Camunda Modeler, у вашій теці /element-templates мають бути включені відповідні JSON-файли. Для детальних інструкцій, будь ласка, перегляньте Встановлення типових розширень.

3. Налаштування

Делегат Get Keycloak roles from user призначений для використання у сервісних завданнях (Service Task) бізнес-процесу. Він отримує список ролей користувача з певного Keycloak-реалму за іменем користувача.

3.1. Налаштування сервісного завдання

  1. Створіть завдання типу Service Task у вашому бізнес-процесі.

  2. Назвіть завдання, наприклад, Отримання системних і реєстрових ролей користувача.

  3. Застосуйте шаблон делегата, обравши відповідний зі списку в налаштуваннях завдання.

    get keycloak roles from user 1

3.2. Налаштування делегата

  1. У полі Realm оберіть Officer для надавачів послуг або Citizen для отримувачів послуг.

  2. Для Username встановіть, наприклад, ${initiator}, щоб вказати ініціатора процесу.

  3. Оберіть Role Type, щоб визначити, які ролі повертати: REGISTRY ROLES, PLATFORM ROLES або ALL ROLES. Ви можете запитати всі (системні та реєстрові), лише системні, або лише реєстрові ролі, доступні для використання у реєстрі. За замовчуванням встановлено REGISTRY ROLES.

  4. Вкажіть змінну процесу (наприклад, rolesResponse), куди буде збережено відповідь. Ця змінна буде тимчасовою (transient). Це дозволяє ефективно управляти отриманими даними без зайвого зберігання інформації в базі даних.

Результатом виконання запита буде повернення переліку назв ролей певного користувача для визначеного реалма: List<String>.

Приклад відповіді зі списком ролей у форматі JSON
[
  "user",
  "admin",
  "hierarchy-registry-manager",
  "personnel-officer-admin",
  "reviewer"
]

Надалі ви зможете використовувати отриманий список ролей для різних цілей у бізнес-процесі. Наприклад, ви зможете отримати лише певну роль зі списку за індексом, сформувати payload із відповідним значенням та зберегти до тимчасової змінної для подальшого застосування у процесі:

Приклад groovy-скрипту для отримання першої ролі з масиву
// Визначення масиву ролей
def roles = ["user", "admin", "hierarchy-registry-manager", "personnel-officer-admin", "reviewer"]

// Отримання першої ролі з масиву
def firstRole = roles[0]

// Формування результату. Наприклад, створимо Map для тимчасової змінної payload
def payload = [firstRole: firstRole]

// Припустимо, що весь масив ролей є доступними ролями, які ми хочемо зберегти
def availableRoles = roles

// Запис даних у змінні процесу
set_transient_variable('payload', payload)
set_variable('availableRoles', availableRoles)

4. Приклад

Ось референтний приклад, який показує, як відповідний делегат використовується у бізнес-процесі:

assign role via url 3
Зображення 1. Референтний приклад. Призначення ролей та запуск бізнес-процесу за прямим посиланням
Де можна знайти приклад бізнес-процесу?

Адміністратор Платформи може розгорнути для вас демо-реєстр — еталонний реєстр, що містить референтні та інші приклади файлів для створення цифрового регламенту. Він містить різноманітні елементи для розробки моделі даних, бізнес-процесів, UI-форм, аналітичної звітності, витягів, сповіщень, зовнішніх інтеграцій та багато іншого.

Детальну інструкцію щодо розгортання демо-реєстру та отримання референтних прикладів моделювання ви знайдете на сторінці Розгортання демо-реєстру із референтними прикладами.

Приклад BPMN-схеми процесу буде доступний у регламенті демо-реєстру за пошуком по ключовим словам — reference-assign-role-officer та reference-assign-role.

Назви форм ви можете знайти всередині відповідних користувацьких задач (User Task) бізнес-процесів у полі Form key:

  • reference-assign-role-start-form.json

  • reference-role-assigned-info-form.json

  • reference-role-not-assigned-error-info-form.json

У Кабінеті користувача бізнес-процес буде доступний у розділі Доступні послуги  📂 Бізнес-процеси по призначенню ролей через спеціальні посилання.

assign role via url 06