Автентифікація посадових осіб, єдина для групи реєстрів завдяки ручним налаштуванням
Загальний опис
При роботі посадової особи в декількох реєстрах, які по своїй природі є спорідненими, виникає потреба виконувати автентифікацію в кожен кабінет окремо використовуючи для цього один і той самий ключ, але виконуючи логін в різних кабінетах. Для спрощення досвіду користувача необхідно розробити підхід для забезпечення SSO в рамках групи реєстрів для мінімізації однотипних дій користувача.
Функціональні сценарії
-
Створення Федерації споріднених реєстрів для SSO адміністратором платформи
-
Налаштування SSO для Федерації споріднених реєстрів адміністратором платформи
-
Автентифікація посадової особи в кабінет за допомогою ключа
-
Автентифікація посадової особи в кабінет за допомогою id.gov.ua
-
Автореєстрація посадової особи
-
Створення користувачів адміністратором реєстру через Підсистему управління користувачами та ролями
-
Створення користувачів адміністратором реєстру через Підсистему моделювання регламенту реєстру (імпорт csv файлу)
-
Налаштування ролей користувачів адміністратором реєстру
-
Налаштування атрибутів користувачів адміністратором реєстру
Ролі користувачів
-
Адміністратор платформи
-
Адміністратор реєстру
-
Адміністратор Федерації споріднених реєстрів
-
Посадова особа
Загальні принципи та положення
-
Споріднені реєстри мають спільну базу користувачів посадових осіб
-
Посадова особа повинна виконувати логін 1 раз коли працює в Споріднених реєстрах
-
Рішення повинно максимально бути побудовано на ручних налаштуваннях по інструкції
-
До Федерації споріднених реєстрів можуть бути підключені як нові реєстри, так і існуючі реєстри з власною базою користувачів
-
Налаштування ролей посадових осіб виконується на рівні Ріалму реєстру федерації
-
Налаштування ідентифікуючих системних атрибутів (fullName, edrpou, drfo) виконується на рівні Мастер-ріалму федерації споріднених реєстрів
-
Налаштування додаткових атрибутів виконується на рівні Ріалму реєстру федерації
-
Мастер-ріалм федерації споріднених реєстрів підтримує режим автореєстрації посадових осіб
-
Мастер-ріалм федерації споріднених реєстрів підтримує інтеграцію з id.gov.ua для автентифікації посадових осіб
-
Identity provider link - посилання в обліковому записі посадової особи в Ріалмі реєстру федерації на обліковий запис в Мастер-ріалмі федерації споріднених реєстрів
-
При перестворені облікового запису в Мастер-ріалмі федерації споріднених реєстрів при існуючому Identity provider link в Ріалмі реєстру федерації обліковий запис в Ріалмі реєстру федерації повинен бути оновлени з новим Identity provider link
-
Адміністратор Федерації споріднених реєстрів виконує налаштування SSO для Федерації споріднених реєстрів та має адмін доступ на Мастер-ріалм федерації споріднених реєстрів
-
Права Адміністратору Федерації споріднених реєстрів надає Адміністратор платформи в ручному режимі в Підсистемі управління користувачами та ролями
-
Налаштування автентифікації у Підсистемі управління Платформою та реєстрами не підтримуються при ручних налаштуваннях Федерації споріднених реєстрів
-
Всі ручні налаштування повинні бути зроблені у відповідних Helm чартах реєстрів. Налаштування Мастер-ріалм федерації споріднених реєстрів повинно бути занесено в один зі Споріднених реєстрів.
-
Keycloak Client CR в Мастер-ріалмі федерації споріднених реєстрів задається на рівні helm chart Ріалму реєстру федерації. Для цього Адміністратор платформи повинен додати відповідні права SA (Keycloak Client CR) з назвою <registry-name>-admin в проекті user-management.
Детальніше з концептами та принципами Федерації споріднених реєстрів можна ознайомитися за посиланням Федерація споріднених реєстрів |
Високорівневий дизайн рішення
Компонентна діаграма
Компонент | Назва | Тип | Розташування | Опис |
---|---|---|---|---|
Identity Provider |
federation-idp |
keycloak-oidc |
Реєстровий ріалм |
Інтеграція з мастер ріалмом для ідентифікації |
Authenticator Execution |
federation-idp |
Identity Provider Redirector |
Реєстровий ріалм / Authentication dso-officer-auth-flow |
У конфігурації налаштовується ідентіті провайдер federation-idp за замовчуванням |
Identity Provider Mapper |
fullName |
Attribute Importer |
Реєстровий ріалм / Identity Provider federation-idp |
Імпорт атрибута fullName з мастер ріалму при автентифікації користувача |
Identity Provider Mapper |
drfo |
Attribute Importer |
Реєстровий ріалм / Identity Provider federation-idp |
Імпорт атрибута drfo з мастер ріалму при автентифікації користувача |
Identity Provider Mapper |
edrpou |
Attribute Importer |
Реєстровий ріалм / Identity Provider federation-idp |
Імпорт атрибута edrpou з мастер ріалму при автентифікації користувача |
Realm |
registry-federation-<group-name> |
Realm |
Keycloak |
Мастер Ріалм для спільного управління користувачами споріднених реєстрів та SSO. <group-name> - назва обрана для спільної групиреєстрів |
Client |
<registry-name>-client |
openid-connect |
registry-federation-<group-name> Realm |
Клієнт для інтеграції реєстровий ріалм - мастер ріалм. Конфігурація повинна бути погоджена з налаштуванням Identity Provider federation-idp в реєстровому ріалмі (client id, client secret, redirect uri). <registry-name> - назва реєстру в федерації |
Client Scope |
dso-identity |
openid-connect |
registry-federation-<group-name> Realm |
Client Scope для одноразового налаштування мапперів fullName, drfo, edrpou з мастер ріалму. Створений client scope необхідно вказати як client scope за замовчуванням (Default Client Scopes) |
Client Scope Mapper |
fullName |
User Attribute |
registry-federation-<group-name> Realm / Client Scope dso-identity |
Створюється для мапінгу атрибута fullName з мастер ріалму |
Client Scope Mapper |
drfo |
User Attribute |
registry-federation-<group-name> Realm / Client Scope dso-identity |
Створюється для мапінгу атрибута drfo з мастер ріалму |
Client Scope Mapper |
edrpou |
User Attribute |
registry-federation-<group-name> Realm / Client Scope dso-identity |
Створюється для мапінгу атрибута edrpou з мастер ріалму |
Authentication |
dso-officer-auth-flow |
Top Level Flow / generic |
registry-federation-<group-name> Realm |
Створюється з аналогічними налаштуваннями як і в реєстровому ріалмі для dso-officer-auth-flow. Примітка: dso-officer-auth execution повинен бути з вимкненим Required типом або під обгорткою Authentication Flow з типом Alternative для можливості первинної перевірки по Cookie та SSO |
Authentication |
federation-idp first broker login |
Top Level Flow / generic |
Реєстровий ріалм |
Authentication flow для першого входу через federation-idp. Повинен бути вибраний як first broker login в налаштуваннях Identity Provider federation-idp |
Authenticator Execution |
registry-federation-authenticator |
registry-federation-authenticator |
Реєстровий ріалм / Authentication federation-idp first broker login |
Автентифікатор для обробки першого входу через мастер ріалм. Потребує додаткової розробки |
Діаграма діяльності registry-federation-authenticator
@Override
protected void authenticateImpl(
AuthenticationFlowContext context,
SerializedBrokeredIdentityContext serializedCtx,
BrokeredIdentityContext identityContext) {
// delete existing identity provider link for user
context.getSession().users().removeFederatedIdentity(context.getRealm(), context.getUser(), identityContext.getIdpConfig().getAlias());
...
}
Конфігурація registry-federation-authenticator
Назва | Тип | Опис |
---|---|---|
Alias |
String |
Назва конфігурації |
Enable officer auto registration |
Boolean |
Параметр для включення режиму автореєстрації посадових осіб |
Default role for officer auto registration |
Array of Strings |
Перелік ролей для автореєстрації посадових осіб |
При використанні Identity Provider першим логіном вважається ситуація коли у жодному обліковому записі реєстрового реалму не знайдений identity provider link на обліковий запис в мастер ріалмі |
Обсяг робіт
Попередня декомпозиція
-
Розробка registry-federation-authenticator (розширення AbstractIdpAuthenticator) з випуском нової версії Кейклоак
-
Розробка інструкцій для ручних налаштувань Федерації споріднених реєстрів з наступним сценарієм:
-
Реєстри нові (користувачів в Ріалмах реєстру федерації ще немає)
-
Автентифікація в Мастер-ріалм федерації споріднених реєстрів виконується по підпису
-
Користувачі повинні бути попередньо створені в Мастер-ріалм федерації споріднених реєстрів в Підсистемі управління користувачами та ролями (без імпорту через csv файл)
-
На рівні Ріалму реєстру федерації налаштована автореєстрація
-
Налаштування атрибутів та ролей відбувається на рівні Ріалму реєстру федерації після першого логіну користувача
-
Обмеження рішення
-
Більшість налаштувань виконується вручну
-
При помилці в Ріалмі реєстру федерації буде показана стандартна сторінка Кейклоак з помилкою
-
Створення користувачів відбувається в ручному режимі Мастер-ріалм федерації споріднених реєстрів в Підсистемі управління користувачами та ролями
-
Імпорт користувачів через файл може бути виконаний тільки на Ріалму реєстру федерації
-
При вході в кабінет немає можливості обрати, чи виконати логін в Ріалмі реєстру федерації чи в Мастер-ріалм федерації споріднених реєстрів
Додаткові задачі на технічний борг
-
Зробити можливість вибору режиму ALTERNATIVE для execution з типом dso-officer-auth-flow
-
IdGovUaOfficerAuthenticator. При включеній автореєстрації і випадку, коли буде знадено за атрибутами більше ніж одного користувача, буде створено ще одного користувача
-
Переробити підхід до призначення ролей за замовчуванням на стандартний замість логіки в автентифікаторах
-
Перейти на единий автентифікатор по обробці першого входу через idp для всіх кейсів
-
IdGovUaOfficerAuthenticator. При генерації помилки перекидає на сторінку з dso автентифікатором навіть якщо за замовчуванням стоїть idp id.gov.ua