Управління перевіркою в ЕДР для автентифікації бізнес-користувачів

Загальний опис

Розробка можливості відключення, технічним адміністратором реєстру, перевірки наявності в ЕДР користувача при вході Для бізнесу.

Загальні принципи та положення

  • Перевірка отримувача послуг в ЕДР здійснюється шляхом інтеграції реєстру з ЕДР через ШБО Трембіта.

  • Без перевірки в ЕДР КЕП громадянина буде класифікуватись як ФОП.

Актори

  • Фізична Особа Підприємець (ФОП)

  • Представник Фізичної Особи Підприємця (ФОП)

  • Представник Юридичної Особи

  • Технічний адміністратор реєстру.

Функціональні сценарії

Технічний адміністратор реєстру через інтерфейс адмін-консолі може змінити поведінку, а саме перевірку наявності та стану активності користувача в ЕДР, для користувачів, що обрали вхід Для бізнесу на сторінці автентифікації.

edr switch control plane config
Figure 1. Екран конфігурації входу бізнес-користувачів в адмін-консолі

Поточний підхід до автентифікації.

Діаграма діяльності (`Activity diagram`). Зміни в класифікації користувача без доступу до ЕДР
Figure 2. Діаграма діяльності (Activity diagram). Зміни в класифікації користувача без доступу до ЕДР

Технічний дизайн рішення

user managment components
Figure 3. Загальна структура компоненти

Впровадження додаткового параметра, що відповідальний за включення/виключення даної перевірки на рівні конфігурації компоненти registry-configuration з подальшим винесенням його до шаблонів реєстрів. Додавання додаткової гілки в автентифікатора keycloak-ds-citizen-authenticator визначення типу користувача без звернення до ЕДР.

Привести назви до одного формату Subject як тип суб’єкта чи роль користувача;
Приклад низькорівневих змін до keycloak-ds-citizen-authenticator.
package com.epam.digital.data.platform.keycloak.ds.citizen.authenticator.registration;

public class BusinessRegistrationService implements RegistrationService {
    ...
    public UserModel registerUser(AbstractAuthenticationFlowContext ctx, UserAttributes attributes) {
        boolean isEdrCheckActive = obtainConfiguration();
        Subject currentUserRole = calculateEntityRole(ctx, attributes, isEdrCheckActive);
        ...
    }

    private Subject calculateEntityRole(AbstractAuthenticationFlowContext ctx, UserAttributes attributes, boolean isEdrCheckActive) {
        if (isEdrCheckActive) {
            EdrEntity edrEntity = ....
            return getSubject(attributes, edrEntity);
        }
        return  getSubject(attributes);
    }
    ...
}
Конфігурація параметрів інтеграції з ЕДР поза межами даного дизайну.
Структура конфігурації values.yaml для конфігурації реєстру та компоненти registry-configuration.
keycloak:
  authFlows:
    citizenAuthFlow:
      authenticators:
        dsCitizenAuthenticator:
          authenticatorConfig:
            edrCheck: true

Міграція існуючих реєстрів

Міграція існуючих реєстрів відбувається шляхом оновлення поточної конфігурації реєстру оновленими параметрами з шаблону реєстру. Тобто, під час міграції реєстру на нову версію відбувається перенесення значень і структур шляхом злиття гілок шаблону до поточної конфігурації реєстру.

Високорівневий план розробки

Технічні експертизи

  • BE

  • DevOps

План розробки

  • Додавання конфігурації на рівні компоненти.

  • Внесення змін в автентифікатор keycloak-ds-citizen-authenticator.

  • Додавання екрана конфігурації в адмін-консоль.

  • Винесення конфігурації на рівень шаблонів реєстрів Helmfile