Можливість запуску БП за прямим посиланнями для надавачів і отримувачів послуг
Загальний опис
Існує необхідність реалізувати можливість входу до кабінетів з подальшим призначенням необхідної ролі даному користувачу.
Функціональні сценарії
-
Вхід до кабінету за посиланням і запуск бізнес-процесу для автоматизованого розподілення ролей.
Глосарій та акроніми
Пряме посилання на бізнес-процес — посилання для запуску бізнес-процесу через GET запит та можливості передачі даних стартової форми у посиланні.
Загальні принципи та положення
-
Надання ролей відбувається за допомогою бізнес-процесу.
-
Задля запобігання безконтрольного запуску бізнес-процесів, автоматичний старт не відбувається, а відбувається перехід на стартову форму з можливістю їх предзаповнення.
-
Створення користувача для надавачів послуг при першому вході налаштовується окремо за допомогою наявного механізму.
-
Бізнес-процеси для зміни ролей рекомендовано розробляти ідемпотентними.
-
Доступність бізнес-процесу для виклику регулюється наявними механізмами.
-
Використання прямих посилань та онбордінг процес можуть використовуватись незалежно так і разом в рамках реєстру, доки задовільняються чинні обмеження використння онбордінг процесу.
-
Прямі посилання можуть бути побудовано до будь-якого доступного для користувача бізнес-процесу.
Високорівневий дизайн рішення
В порталах при переході на стартову форму бізнес-процесу за посиланням для не автентифікованих користувачів, після автентифікації користувач перенаправляється на стартову форму.
В порталах існує окремий шлях (route) через який можна передати ідентифікатор БП через параметр в посиланні (path parameters) та передати дані стартової форми при наявності через параметри запиту (query parameters).
https://officer-portl.base-url/officer/process-list/${business-process-key}/start-form?data=${data}
https://citizen-portl.base-url/process-list/${business-process-key}/start-form?data=${data}
Назва параметра | Опис |
---|---|
business-process-key |
Рядок, унікальний ідентифікатор бізнес-процесу (ОБОВ’ЯЗКОВИЙ) |
data |
Base64 представлення JSON структури для стартової форми процесу (ОПЦІЙНИЙ) |
Відмінності у поведінці між кабінетами нема, єдина відмінність це різні шляхи для побудови прямих посилань. Тому далі в дизайні розглядається все на прикладі надавачів послуг. |
При переході за таким посиланням користувача буде перенаправлено на стартову форму з можливістю її предзаповнення.
Ключові сценарії
Повернення користувача за посиланням з якого він прийшов після автентифікації.
В поточній реалізації після успішної автентифікації користувач завжди перенаправляється на стартову сторінку і у випадку якщо користувач використав посилання на внутрішній захищений ресурс, то ця інформація не зберігається.
Розширення API для сторінки /home опційним параметром rewrite_redirect_url
local function make_oidc(oidcConfig)
ngx.log(ngx.DEBUG, "OidcHandler calling authenticate, requested path: " .. ngx.var.request_uri)
-- Отримання query parameter redirect_url з /home і прокидання цього параметру до kong oidc plugin/resty.openidc бібліотеки
local res, err, target_url = require("resty.openidc").authenticate(oidcConfig, nil, oidcConfig.unauth_action, oidcConfig.session_opts)
if err then
ngx.log(ngx.DEBUG, "OidcHandler error: " .. err)
if err == "unauthorized request" then
ngx.log(ngx.INFO, "OidcHandler unauthorized request to " .. target_url)
utils.exit(ngx.HTTP_UNAUTHORIZED, err, ngx.HTTP_UNAUTHORIZED)
end
if oidcConfig.recovery_page_path then
ngx.log(ngx.DEBUG, "Entering recovery page: " .. oidcConfig.recovery_page_path)
ngx.redirect(oidcConfig.recovery_page_path)
end
ngx.log(ngx.DEBUG, "Error while requesting " .. ngx.var.request_uri)
utils.exit(500, err, ngx.HTTP_INTERNAL_SERVER_ERROR)
end
return res
end