Перейти к содержанию

eID Gerege — интеграция доверяющей стороны (RP)

Руководство по подключению стороннего системного интегратора (банка, сервиса) к eID Gerege для получения мобильной аутентификации и квалифицированной электронной подписи. Протокол совместим со Smart-ID.

Discovery: GET https://rp-api.eidmongolia.mn/.well-known/eid — возвращает эндпойнты / возможности / PKI в машиночитаемом JSON.

1. Регистрация

RP регистрируется оператором заранее. Предоставьте следующее: - relyingPartyUUID — стабильный UUID (вы предоставляете свой либо оператор выдаёт) - relyingPartyName — отображаемое имя - subject клиентского сертификата mTLS — в продакшене подключение к RP-API идёт по клиентскому TLS-сертификату; subject DN сертификата должен совпадать с зарегистрированным - permissions — разрешённые операции (аутентификация / подписание)

Оператор: POST /v3/admin/relying-parties (только для администратора).

2. Подключение

  • База: https://rp-api.eidmongolia.mn/v3
  • Аутентификация (prod): Authorization: Bearer <api_secret> (RP определяется по хешу SHA-256) либо клиентский сертификат mTLS (subject должен совпадать с зарегистрированным RP) + relyingPartyUUID/relyingPartyName в теле запроса. Дополнительно: белый список IP (allowed_ips).
  • Тело каждого запроса: relyingPartyUUID, relyingPartyName, certificateLevel (QUALIFIED|ADVANCED|QSCD), signatureProtocol (ACSP_V2), interactions.

3. Аутентификация

Эндпойнт Назначение
POST /v3/authentication/device-link/anonymous QR/Web2App — гражданин заранее неизвестен
POST /v3/authentication/notification/etsi/{semanticsIdentifier} Push — PNOMN-<civilId>
POST /v3/authentication/notification/document/{documentNumber} Push — UUID устройства

Ответ (notification): { sessionID, vc: { value }, ... }. vc.value — код подтверждения, показываемый гражданину. device-link/anonymous дополнительно возвращает sessionToken, sessionSecret и deviceLinkBase, причём vc там — обычная строка (пример: RP_GEREGE_INTEGRATION.md §1.1).

4. Подписание

Эндпойнт Назначение
POST /v3/signature/certificate/{documentNumber} Выбор сертификата перед подписанием
POST /v3/signature/notification/document/{documentNumber} Push — подписывает digest документа (SHA-256, base64)
POST /v3/signature/notification/etsi/{semanticsIdentifier} Push — по PNOMN-<civilId>

Дополнительно в теле запроса подписания: digest (base64), hashType (SHA256|SHA384|SHA512).

5. Опрос сессии (long-poll)

GET /v3/session/{sessionId}?timeoutMs=120000
- RUNNING — выполняется - COMPLETE + result.endResult=OKsignature.value (отделённая подпись), cert.value (X.509) - COMPLETE + другой endResult (USER_REFUSED, TIMEOUT, …) → отказ

6. PKI (валидация)

  • OCSP: endpoints.ocsp из discovery-документа
  • CRL: endpoints.crl из discovery-документа
  • Выпущенные сертификаты выстраиваются в цепочку до корневого CA eID Gerege.

7. Идентификаторы гражданина

Поле Пример
semanticsIdentifier PNOMN-111949212017 (физлицо), NTRMN-1234567 (организация)
documentNumber UUID, возвращаемый при регистрации
registrationNumber Монгольский регистрационный номер (МА74101813) — разрешается при push-поиске
civilId Номер удостоверения личности

Пример RP-клиента: web/src/lib/rpclient.ts (рабочая реализация на TypeScript).