# Рекомендации по реализации интеграции

{% hint style="info" %}
Для использования сервиса биометрической верификации необходимо, чтобы Участник:

1\.  Прошел процедуру регистрации на Портале АО «НПК» (см. подробнее в [Регистрация и авторизация в Портале НПК](https://docs.npck.kz/rabota-s-testovym-okruzheniem-is-npk/rabota-s-testovym-portalom-npk/registraciya-i-avtorizaciya-v-portale-npk))

2\. Подал заявку на подключение к ЦОИД (см. подробнее в [Подключение к ЦОИД](/rabota-s-testovym-okruzheniem-is-npk/podklyuchenie-k-coid.md))

3\. Зарегистрировал приложение Участника (см. подробнее в [Пользователям API (добавление и использование приложения)](https://docs.npck.kz/rabota-s-testovym-okruzheniem-is-npk/rabota-s-testovymi-servisami/polzovatelyam-api-dobavlenie-i-ispolzovanie-prilozheniya))
{% endhint %}

{% hint style="warning" %}
Верификацию могут пройти люди, у которых имеется как минимум один из следующих документов:&#x20;

* удостоверение личности гражданина РК
* паспорт гражданина РК
* вид на жительство иностранца в РК
* удостоверение лица без гражданства (казахстанского образца)
  {% endhint %}

## Рекомендация: отображение инструкции перед началом биометрии

Перед запуском процесса биометрической аутентификации **рекомендуется отобразить пользователю инструкцию** с визуальными примерами и текстовыми пояснениями. Это поможет обеспечить корректное прохождение биометрии и повысить процент успешных распознаваний.\
**Основные рекомендации для пользователя**

* **Лицо должно быть хорошо освещено.**\
  Избегайте резкого света и теней на лице.
* **Не должно быть яркого света за спиной.**\
  Например, открытого окна или лампы позади.
* &#x20;**Держите устройство ровно и не двигайтесь.**\
  Камера должна быть расположена на уровне лица
* **В кадре не должно быть других лиц.**\
  Лицо должно быть единственным объектом в кадре.

<figure><img src="/files/X5LPt63RS8U5YPT0s7vZ" alt=""><figcaption><p>Пример интерфейса</p></figcaption></figure>

## Общее описание процесса:

<figure><img src="/files/cnWdYA0963Hh0g5nuhPy" alt=""><figcaption></figcaption></figure>

1. Пользователь инициирует получение услуги в приложении Участника, для которой требуется проведение верификация личности.
2. При отправке запроса на аутентификацию личности - ЦОИД осуществляет проверку соответствия номера телефона и ИИН в базе пользователей ЦОИД, а также в Базе мобильных граждан (БМГ) в случае, если указанный номер в запросе уже привязан к другому ИИН в базе пользователей ЦОИД.\
   \
   В случае формирования ошибки "PHONE\_BELONGS\_TO\_ANOTHER\_IIN\_IN\_BMG" процедура аутентификации не проводится.\
   \
   В данном случае Участнику необходимо отобразить пользователю страницу с уведомлением о том, что указанный номер телефона зарегистрирован за другим ИИН, а также предоставить рекомендацию об обновлении данных в БМГ.<br>

   Рекомендации по тексту уведомления:

   <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p>"Введенный номер телефона закреплен за другим ИИН. Пожалуйста, обновите номер телефона в Базе мобильных граждан, обратившись в единый контакт-центр 1414 на портале egov.kz"</p></div>

<figure><img src="/files/xTBmNghY17cWpuZkpzBW" alt="" width="563"><figcaption><p>Пример для отображения в случае если номер телефона привязан к другому ИИН </p></figcaption></figure>

3. Для проведения верификации приложение Участника перенаправляет пользователя на сервис биометрической верификации.

{% hint style="warning" %}
Если в ОС Android при проведении liveness-сессии не отображается изображение клиента (см. пример на рисунке ниже), то потенциальным решением проблемы может являться применение следующих параметров:

*webView\.settings.allowContentAccess = true; webView\.settings.mediaPlaybackRequiresUserGesture = false; webView\.settings.domStorageEnabled = true*

WebKit в Android, позволяет видео компонентам запускаться только по действию пользователя, при этом для корректной работы сервисов ЦОИД камера запускается программными средствами (autoplay), WebKit блокирует данное действие и выдает ошибку. Чтобы избежать этого, необходимо в компоненте webView указать данную настройку.
{% endhint %}

<figure><img src="/files/oLiWIMREOpKd8CbybRhA" alt="" width="143"><figcaption><p>Пример отсутствия доступа к контенту для WebView</p></figcaption></figure>

{% hint style="warning" %}
В IOS необходимо использовать SafariWebView. WKWebView не поддерживается.
{% endhint %}

<details>

<summary> Перенаправления пользователя для прохождения верификации</summary>

Для перенаправления пользователя для прохождения аутентификации Участнику необходимо:

1\) Реализовать получение URL-адреса для перенаправления Клиента. Описание метода «Получить URL-адрес для перенаправления клиента д» (POST /v1/auth/generate-user-url) приведено в <https://auth-openapi.npck.kz/#tag/Auth/operation/generateUserUrl>.

&#x20;

*Примечание: Метод получения URL-адрес для перенаправления клиента POST /oauth2/generate-user-url (см.* [*https://auth-openapi.npck.kz/#tag/Auth/operation/generateUserUrlDeprecated*](https://auth-openapi.npck.kz/#tag/Auth/operation/generateUserUrlDeprecated)*) является устаревшим, рекомендуется перейти на использование метода POST /v1/auth/generate-user-url (см.* [*https://auth-openapi.npck.kz/#tag/Auth/operation/generateUserUrl*](https://auth-openapi.npck.kz/#tag/Auth/operation/generateUserUrl)*).*

2\) Реализовать перенаправление пользователя на полученный URL-адрес.

</details>

{% hint style="info" %}
То какая услуга ЦОИД должна быть предоставлена определяется значениями, указанными в параметре scopes при запросе URL-адреса для перенаправления пользователя в ЦОИД:

*Получение персональных данных:*

* iin - доступ к ИИН пользователя&#x20;
* full\_name - доступ к ФИО пользователя&#x20;
* first\_name - доступ к имени пользователя
* last\_name - доступ к фамилии пользователя
* middle\_name - доступ к отчеству пользователя
* date\_of\_birth - доступ к дате рождения пользователя&#x20;
* place\_of\_birth - доступ к месту рождения пользователя (описание объекта в [Описание объектов](/servisy-coid/servis-autentifikacii-lichnosti-klienta-finid/opisanie-obektov.md#ref130980979))
* gender - доступ к полу пользователя (описание объекта см. в [Описание объектов](/servisy-coid/servis-autentifikacii-lichnosti-klienta-finid/opisanie-obektov.md#toc165886969))
* nationality - доступ к национальности пользователя (описание объекта см. в [Описание объектов](/servisy-coid/servis-autentifikacii-lichnosti-klienta-finid/opisanie-obektov.md#toc165886969))
* registration\_address - доступ к адресу регистрации пользователя (описание объекта см. в [/pages/01xK7ZFhDPTSZqD3IIxW#id-3.-struktura-obekta-registration\_address-adres-registracii](https://docs.npck.kz/servisy-coid/servis-biometricheskoi-verifikacii/pages/01xK7ZFhDPTSZqD3IIxW#id-3.-struktura-obekta-registration_address-adres-registracii "mention"))
* document\_number - доступ к информации о номере документа, удостоверяющего личность пользователя&#x20;
* document\_type - доступ к типу документа, удостоверяющего личность пользователя (описание объекта см. в [Описание объектов](/servisy-coid/servis-autentifikacii-lichnosti-klienta-finid/opisanie-obektov.md#toc165886969))
* document\_issue\_date - доступ к информации о дате выдачи документа, удостоверяющего личность пользователя&#x20;
* document\_expiry\_date - доступ к дате истечения срока действия документа, удостоверяющего личность пользователя&#x20;
* document\_issue\_place - доступ к информации о том, кем был выдан документ, удостоверяющий личность пользователя (описание объекта см. в [Описание объектов](/servisy-coid/servis-autentifikacii-lichnosti-klienta-finid/opisanie-obektov.md#toc165886969))

*Верификация физического лица:*

* openid - если необходима только верификация личности пользователя (без предоставления доступа к персональным данным), то в параметре scopes должно быть указано только значение openid

*Подписание документов ЭЦП:*

* esign **-** подписания документов ЭЦП (подробнее о подписании см. [Сервис управления облачной ЭЦП Esign](/servisy-coid/servis-upravleniya-oblachnoi-ecp-esign.md)), может использоваться совместно со значениями scopes для персональных данных и верификации физического лица

*Примечание: Описание объектов см. в* [Описание объектов](/servisy-coid/servis-autentifikacii-lichnosti-klienta-finid/opisanie-obektov.md)
{% endhint %}

{% hint style="warning" %}
Время действия URL-адреса для перенаправления (время «жизни») составляет 15 минут
{% endhint %}

4. Пользователю отображается форма верификации ЦОИД. Пользователь проходит верификацию личности.&#x20;
5. Пользователь должен дать согласие на доступ к его данным для приложения Участника.

{% hint style="info" %}
Пользователь может отклонить согласие на доступ к его данным.&#x20;

Если Пользователь отклоняет согласие на доступ к его данным или происходит  ошибка, то Пользователь будет перенаправлен на указанный на шаге 2 **redirectUri**, с указанием кода ошибки, по следующему шаблону:

`[redirectUri]?errorCode=[error code]&state=[state]`

В таком случае процесс завершается, код авторизации не предоставляется.&#x20;
{% endhint %}

6. После того, как Пользователь выполнит все действия на стороне ЦОИД, осуществляется его возврат в приложение Участника.

{% hint style="info" %}
Если верификация Пользователя проходит успешно и он дает согласие на доступ к его данным, то Пользователь перенаправляется обратно в приложение Участника (на указанный в запросе *redirectUri*) с одноразовым кодом авторизации (code), по следующему шаблону:

`[redirectUri]?code=[authorization code]&state=[state]`
{% endhint %}

{% hint style="warning" %}
Код авторизации является одноразовым.&#x20;

Время действия кода авторизации (время «жизни») составляет 300 секунд
{% endhint %}

{% hint style="warning" %}
Редирект из webview в случае SafariWebView нужно перехватывать через диплинк (deeplink)
{% endhint %}

7. Приложение Участника получает результат верификации , используя полученный на предыдущем шаге код авторизации.

<details>

<summary>Получение результата верификации </summary>

Для получения результата верификации Участнику необходимо:

1\) Реализовать формирование запроса получения результата верификации клиента, используя полученный код авторизации. Описание используемого для этого метода приведено в <https://auth-openapi.npck.kz/#tag/Auth/operation/getOauthToken>.

{% hint style="info" %}
Срок действия `access_token` зависит от того, какие данные запрашиваются (scope):

* Для аутентификации личности клиента через FinID (`openid`, `iin`, `first_name` и т.д.) — **12 часов**.
* Для работы с облачной ЭЦП (`esign`, `organization_esign`) — **5 минут**.
* Для получения информации о банковских счетах клиента (через Межбанковскую систему обмена информацией по открытым программным интерфейсам (Open API))  (`accounts`, `account_balance`, `account_transactions`) — **30 дней**.
  {% endhint %}

2\) Реализовать отправку сформированного запроса и получение результата верификации клиента.

В результате успешной верификации предоставляется идентификационный токен (в формате JWT, см. RFC 7519), в котором, в том числе, в полезной нагрузке (payload) содержатся персональные данные, если они были запрошены, в соответствии с запрошенными областями действия (scopes).

*Примечание: Дополнительно доступен метод получения списка публичных ключей для проверки токена (см.* [*https://auth-openapi.npck.kz/#tag/Auth/operation/wellKnown*](https://auth-openapi.npck.kz/#tag/Auth/operation/wellKnown)*).*

*Дополнительно доступен опциональный метод интроспекции токена (см описание* [*https://auth-openapi.npck.kz/#tag/Auth/operation/oauth2Introspect*](https://auth-openapi.npck.kz/#tag/Auth/operation/oauth2Introspect)*). Данный метод используется для проверки того, активен или истек ли конкретный токен, а также для получения связанных с токеном метаданных.*

</details>

{% hint style="info" %}
При получении результата верификации в параметре access\_token (в формате JWT) , кроме всего прочего, в поле sid (session id) содержится идентификатор сессий пользователя, в рамках которой была проведена верификация.&#x20;

Рекомендуется сохранить на своей стороне значение sid. Используя это значение, можно будет получить информацию о сессии верификации пользователя (количество попыток прохождения livness-проверки, результат и т.д.) .&#x20;
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.npck.kz/servisy-coid/servis-biometricheskoi-verifikacii/rekomendacii-po-realizacii-integracii.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
