7.4 KiB
Цель встречи: Согласовать реализацию для выпуска УКЭП через ЕБС.
Ситуация: Для регистрации и входа в новом приложении УКЭП предполагаются разные сценарии обработки. Сначала происходит идентификация в УБИ, а затем регистрация пользователя. Сначала происходит вход/восстановление пароля, а затем идентификация в УБИ как второй фактор.
Вводные: используется простой сценарий идентификации без проверок на стороне ИС.
В зависимости от сценария предполагаются разные страницы с разными действиями для пользователя: прекратить, зарегистрироваться, войти в ЛК.
Всего есть три вида конечных страниц в рамках прохождения УБИ:
SucessUrl – страница успеха [предполагаем, что на стороне приложения] – успешная идентификация – на стороне банка, перенаправление на страницу с product_id, product_type, token ErrorUrl – страница ошибки [предполагаем, что на стороне приложения] – ошибки во время прохождения идентификации FailureUrl – страница неуспеха, невозможно провести удалённую идентификацию (в случае отметки о налоговом резидентстве в опроснике – может ли быть нашим случаем? используется ли опросник при выпуске УКЭП? + при разрывном сценарии (не наш случай, используется простой сценарий))
Предложение следующее:
Вопрос: Может ли быть несколько successUrl и несколько errorUrl? Может. Определение URL страницы успеха или ошибки возможно в зависимости от переданного параметра product_type в ссылке на старт сценария. Для этого в настройки success-url и error-url можно добавить шаблон с if-else конструкцией. Подробное описание настройки в документе «Типовое решение УБИ. Руководство по инсталляции» 5.4.7. Описание расширенных настроек сервиса «Маршрутизатор», 5.4.7.1. Настройка нескольких страниц успеха и ошибки.
Краткий ответ: может. См. стр. 37 документа УБИ. Руководство по инсталляции.
Как будет работать?
- Использовать разные product_type для registration и login
- Использовать конструкцию if else в настройках маршуртузитора для sucess_page и error_page
product_type -> product_id возможно ранжирование
success‑url: <#if productType == "test1">https://test1.ru/success<#elseif productType == "test2">https://test2.ru/success<#else>https://test3.ru</#if>
error‑url: <#if productType == "test1">https://test1.ru/success**<#elseif** productType == "test2">https://test2.ru/success**<#else>https://test3.ru</#if>**
scale 3
actor "Клиент" as client
participant "Банковское приложение" as bank
participant "Gate-Out" as gateout
participant "Модуль УБИ" as ubi
== Сценарий регистрации ==
client -> bank: Переходит на страницу регистрации
bank --> client: "Страница пройдите идентификацию через ЕБС"
client -> bank: Нажимает "Пройти идентификацию"
bank -> ubi: Редирект на модуль_уби/api/v1/authentication/start?bank_id=&product_id=&product_type=**registration**
ubi --> client: Отображает страницу идентификации
note right ubi: Включает в себя\nвход в ЕСИА и тд
client -> ubi: Проходит идентификацию
note over gateout, ubi #129453: Успех идентификации
ubi -> gateout: Передаёт сведения из ЕСИА
gateout -> bank: POST /clients/info [JSON]
bank -> bank: Создаёт ПД клиента
bank --> gateout: 200 OK [XML]
gateout --> ubi: 200 OK
ubi -> ubi: Определяет по product_type в Маршрутизаторе sucess_url
ubi --> bank: sucess_url_**registration**?bank_id=&product_id&pdroduct_type=**registration**&token=
bank -> client: Показывает страницу регистрации пользователя
note over gateout, ubi #f04a4a: Ошибка идентификации
ubi -> ubi: Определяет по product_type в Маршрутизаторе error_url
ubi --> bank: error_url_**registration**
bank -> client: Показывает страницу ошибки идентификации ЕБС
В gateout в простом сценарии будет отправка практически параллельно с редиректом.
actor "Клиент" as client
participant "Банковское приложение" as bank
participant "Gate-Out" as gateout
participant "Модуль УБИ" as ubi
== Сценарий входа ==
client -> bank: Переходит на страницу входа и аутентифицируется
bank --> client: "Страница пройдите идентификацию через ЕБС" как 2 фактор
client -> bank: Нажимает "Пройти идентификацию"
bank -> ubi: Редирект на модуль_уби/api/v1/authentication/start?bank_id=&product_id=&product_type=**login**
ubi --> client: Отображает страницу идентификации
note right ubi: Включает в себя\nвход в ЕСИА и тд
client -> ubi: Проходит идентификацию
note over gateout, ubi #129453: Успех идентификации
ubi -> gateout: Передаёт сведения из ЕСИА
gateout -> bank: POST /clients/info [JSON]
bank -> bank: Метчит ПД клиента
bank --> gateout: 200 OK [XML]
gateout --> ubi: 200 OK
ubi -> ubi: Определяет по product_type в Маршрутизаторе sucess_url
ubi --> bank: sucess_url_login?bank_id=&product_id&pdroduct_type=**login**&token=
bank -> client: Показывает страницу регистрации пользователя
note over gateout, ubi #f04a4a: Ошибка идентификации
ubi -> ubi: Определяет по product_type в Маршрутизаторе error_url
ubi --> bank: error_url_**login**
bank -> client: Показывает страницу ошибки идентификации ЕБС
Возможен ли такой вариант?