Автентифікація з допомогою КЕП
Модуль представляє собою розширення для Keycloack IAM що імплементує Authentication Service Provider Interfaces (SPI) та надає можливість автентифікації користувачів з допомогою КЕП. Зокрема розширення імплементує org.keycloak.authentication.AuthenticatorFactory та Authenticator інтерфейси де Authenticator визначає логіку а AuthenticatorFactory відповідає за створення екземпляра Authenticator. Для перевірки ЕЦП та отримання інформації про користувача модуль здійснює виклик REST API КЕП сервіса.
Процес автентифікації користуача з допомогою КЕП:
Покрокова схема автентифікації користувача наведена нижче:

-
Відправка користувачем запиту на відображення сторінки автентифікації Серверу Авторизації;
-
Обробка запиту Сервером Авторизації та відправка користувачеві відповіді із вмістом web-сторінки автентифікації та iframe HTML елементом для відображення віджета підпису id.gov.ua;
-
Відправка бравзером запиту на відображення віджета підпису id.gov.ua;
-
Обробка запиту сервером id.gov.ua та відправка користувачеві відповіді із вмістом web-сторінки віджета;
-
Зчитування користувачем власного особистого ключа з використанням відповідної бібліотеки підпису, що включає:
-
зчитування файлу з особистим ключем java-скрипт-бібліотекою чи зчитування ключа з електронного ключа чи іншого носія ключової інформації з використанням пароля захисту;
-
відправку бібліотекою запиту у відповідний АЦСК на отримання ланцюжка сертифікатів користувача за протоколом CMP та отримання відповіді від АЦСК або зчитування сертифіката користувача з наданого файлу чи з постійного файлового сховища, відправку запитів на перевірку статусу сертифікатів у АЦСК за протоколом OCSP і отримання відповідей та завантаження з АЦСК поточних списків відкликаних сертифікатів (СВС) і перевірку статусу сертифікатів з використанням завантажених СВС;
-
-
Накладання користувачем КЕП на одноразовий код (nonce) - підпис одноразового коду з використанням відповідної бібліотеки підпису, що включає:
-
відправку бібліотекою запиту до АЦСК на формування мітки часу за протоколом TSP та отримання відповіді від АЦСК із сформованою міткою;
-
формування КЕП з міткою часу з використанням особистого ключа користувача;
-
-
Відправка користувачем запиту на автентифікацію із підписаним одноразовим кодом (nonce) методом POST протоколу HTTPS;
-
Обробка запиту від Користувача Сервером Авторизації та відправка запиту до КЕП Сервісу для перевірки підпису
-
Перевірка КЕП Сервісом підписаного одноразового коду від Користувача з використанням бібліотеки підпису у вигляді Java бібліотеки і мережного криптомодуля що включає:
-
відправку бібліотекою запиту у АЦСК на пошук та перевірку статусу сертифіката Користувача за протоколом OCSP і отримання відповіді та завантаження від АЦСК поточних СВС і перевірку статусу сертифіката з використанням завантажених СВС;
-
перевірку КЕП з використанням перевіреного сертифіката особистого ключа користувача АЦСК;
-
обрахунок хеш суми одноразового коду та звірку з хешем з підпису
-
-
Відправка КЕП Сервісом відповіді з ідентифікаційними даними користувача отриманих з сертифіката Користувача в разі успішного проходження перевірки або відповідної помилки в протилежному випадку;
-
Прийняття рішення про автентифікацію Користувача в залежності від відповіді КЕП Сервісу що включає пошук користувача за атрибутами (ІНН, ПІБ, …)
-
Відправкау (у разі успішної автентифікації) Сервером Авторизації користувачеві відповіді із перенаправленням браузера користувача на сторінку платформи, яка була вказана в якості зворотнього посилання (redirect_uri) під час попереднього перенаправлення на Ссервер Авторизації;
Параметри конфігурації сервісу
Параметр | Тип | Необхідність | Опис |
---|---|---|---|
sign.timeout-ms |
long |
required |
дозволений проміжок часу між накладанням підпису та перевіркою |
sign.jwt-validation |
boolean |
required |
вмикає перевірку власника JWT токену |
Технологічний стек
-
Spring/Spring Boot - програмний каркас з відкритим кодом та контейнери з підтримкою інверсії управління для платформи Java.
-
Spring Cloud Kubernetes - інтеграція з об’єктами Kubernetes інфраструктури ConfigMap/Secrets
-
IIT Digital Signature Java library - бібліотека для створення та перевірки цифрового підпису документа.
-
Maven - управління залежностями