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)¶
-RUNNING — выполняется
- COMPLETE + result.endResult=OK → signature.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).