Рекомендации по реализации интеграции
Last updated
Last updated
Для использования сервиса управления облачной ЭЦП Esign необходимо, чтобы Участник:
1. Прошел процедуру регистрации на Портале АО «НПК» (см. подробнее в Регистрация и вход)
2. Подал заявку на подключение к ЦОИД (см. подробнее в Подключение к ЦОИД)
3. Зарегистрировал приложение Участника (см. подробнее в Управление API и приложениями)
Подписание документов ЭЦП доступно для людей, у которых имеется как минимум один из следующих документов:
удостоверение личности гражданина РК
паспорт гражданина РК
вид на жительство иностранца в РК
удостоверение лица без гражданства (казахстанского образца)
Пользователь инициирует получение услуги в приложении Участника, для которой требуется подписание документа ЭЦП.
Загрузка документов для подписания
Перед началом процесса подписания приложение Участника предварительно загружает документы, которые должны быть подписаны ЭЦП пользователя
Срок хранения загруженного, но не подписанного документа составляет 24 часа с момента загрузки. По истечении 24 часов документ удаляется
Идентификатор загруженного документа используется при последующем запросе подписания документов, а также при получении подписанных документов
Поддерживается подписание электронных документов в форматах PDF, XML, BLOB (документ в виде массива байт)
Подписание документов пользователем
Для подписания документов ЭЦП приложение Участника перенаправляет клиента на Сервис управления облачной ЭЦП Esign.
Если в ОС Android при проведении liveness-сессии не отображается изображение клиента (см. пример на рисунке ниже), то потенциальным решением проблемы может являться применение следующих параметров:
webView.settings.allowContentAccess = true; webView.settings.mediaPlaybackRequiresUserGesture = false; webView.settings.domStorageEnabled = true
WebKit в Android, позволяет видео компонентам запускаться только по действию пользователя, при этом для корректной работы сервисов ЦОИД камера запускается программными средствами (autoplay), WebKit блокирует данное действие и выдает ошибку. Чтобы избежать этого, необходимо в компоненте webView указать данную настройку.
В IOS необходимо использовать SafariWebView. WKWebView не поддерживается.
То какая услуга ЦОИД должна быть предоставлена определяется значениями, указанными в параметре scopes при запросе URL-адреса для перенаправления клиента в ЦОИД.
Для подписания документов ЭЦП используется значение esign
Время действия URL-адреса для перенаправления (время «жизни») составляет 15 минут
Пользователю отображается форма аутентификации ЦОИД. Пользователь проходит двухфакторную аутентификацию личности. Подписание документов ЭЦП осуществляется после проведения аутентификации личности пользователя.
После успешной аутентификации пользователя, ему отображается информация о документах, направленных для подписания.
Пользователь подписывает документы ЭЦП.
Пользователь может отклонить подписание документов ЭЦП.
Если Пользователь отклоняет подписание документов ЭЦП или происходит ошибка, то Пользователь будет направлен на указанный при запросе URL-адреса для перехода в ЦОИД (на шаге 4) redirectUri, с указанием кода ошибки, по следующему шаблону:
[redirectUri]?errorCode=[error code]&state=[state]
В таком случае процесс завершается, код авторизации не предоставляется.
После того, как Пользователь выполнит все действия на стороне ЦОИД, осуществляется его возврат в приложение Участника.
Если аутентификация Пользователя проходит успешно и он подписывает документы ЭЦП, то Пользователь перенаправляется обратно в приложение Участника (на указанный в запросе URL-адреса для перехода в ЦОИД redirectUri) с одноразовым кодом авторизации (code), по следующему шаблону:
[redirectUri]?code=[authorization code]&state=[state]
Код авторизации является одноразовым.
Время действия кода авторизации (время «жизни») составляет 300 секунд
Редирект из webview в случае SafariWebView нужно перехватывать через диплинк (deeplink)
Приложение Участника получает токен доступа, используя полученный на предыдущем шаге код авторизации.
Токен доступа необходим Участнику для последующего получения информации о подписанных документах (шаг 9)
Важно! Токен доступа должен сохраняться в тайне и не передаваться в публичный доступ, должен храниться на серверной стороне приложения Участника, и вся обработка, связанная с ним, должна производиться на серверной стороне приложения.
В параметре access_token (в формате JWT) , кроме всего прочего, в поле sid (session id) содержится идентификатор сессий пользователя, в рамках которой была проведена аутентификация.
Рекомендуется сохранить на своей стороне значение sid. Используя это значение, можно будет получить информацию о сессии аутентификации пользователя (количество попыток прохождения livness-проверки, количество отправленных СМС-кодов, результат и т.д.) .
Получение подписанных документов
Приложение Участника получает подписанные документы, используя полученный на предыдущем шаге токен доступа.
Метод проверки валидности ЭЦП зависит от того, документ какого типа был подписан:
для документов в формате BLOB (binary linked object) - используется метод, описание которого приведено в https://esign-openapi.npck.kz/#tag/Esign/operation/verifySignedBlob
для документов в формате PDF - используется метод, описание которого приведено в https://esign-openapi.npck.kz/#tag/Esign/operation/verifySignedPdf
для документов в формате XML - используется метод, описание которого приведено в https://esign-openapi.npck.kz/#tag/Esign/operation/verifySignedXml