跳转至

eID Gerege —— 依赖方(RP)集成

本指南介绍如何将第三方系统(银行、各类服务)接入 eID Gerege,以获得移动端身份认证合格电子签名能力。通信协议与 Smart-ID 兼容。

服务发现: GET https://rp-api.eidmongolia.mn/.well-known/eid —— 以机器可读的 JSON 返回接口 / 能力 / PKI 信息。

1. 注册

RP 由运营方预先注册。请提供以下信息: - relyingPartyUUID —— 稳定的 UUID(由您提供,或由运营方签发) - relyingPartyName —— 显示名称 - mTLS 客户端证书 subject —— 生产环境通过 TLS 客户端证书连接 RP-API; 证书的 subject DN 必须与注册信息一致 - permissions —— 允许的操作(身份认证 / 签名)

运营方接口:POST /v3/admin/relying-parties(仅管理员)。

2. 连接方式

  • 基础地址: https://rp-api.eidmongolia.mn/v3
  • 认证(生产环境): Authorization: Bearer <api_secret>(通过 SHA-256 哈希定位 RP), 或使用 mTLS 客户端证书(subject 必须与已注册 RP 一致)+ 请求体中的 relyingPartyUUID/relyingPartyName。此外还有 IP 白名单(allowed_ips)。
  • 每个请求的请求体:relyingPartyUUIDrelyingPartyNamecertificateLevelQUALIFIED|ADVANCED|QSCD)、signatureProtocolACSP_V2)、interactions

3. 身份认证

接口 用途
POST /v3/authentication/device-link/anonymous 二维码 / Web2App —— 事先不知道公民身份
POST /v3/authentication/notification/etsi/{semanticsIdentifier} 推送 —— PNOMN-<civilId>
POST /v3/authentication/notification/document/{documentNumber} 推送 —— 设备 UUID

响应(notification):{ sessionID, vc: { value }, ... }vc.value 是展示给公民的验证码。 device-link/anonymous 还会额外返回 sessionTokensessionSecretdeviceLinkBase, 其中的 vc 为普通字符串(示例见 RP_GEREGE_INTEGRATION.md §1.1)。

4. 签名

接口 用途
POST /v3/signature/certificate/{documentNumber} 签名前选择证书
POST /v3/signature/notification/document/{documentNumber} 推送 —— 对文档 digest(SHA-256,base64)签名
POST /v3/signature/notification/etsi/{semanticsIdentifier} 推送 —— 按 PNOMN-<civilId>

签名请求体还需包含:digest(base64)、hashTypeSHA256|SHA384|SHA512)。

5. 轮询会话(长轮询)

GET /v3/session/{sessionId}?timeoutMs=120000
- RUNNING —— 处理中 - COMPLETE + result.endResult=OKsignature.value(分离式签名)、cert.value(X.509) - COMPLETE + 其他 endResultUSER_REFUSEDTIMEOUT 等)→ 被拒绝

6. PKI(验证)

  • OCSP: discovery 文档中的 endpoints.ocsp
  • CRL: discovery 文档中的 endpoints.crl
  • 签发的证书可一路链接至 eID Gerege 根 CA。

7. 公民标识符

字段 示例
semanticsIdentifier PNOMN-111949212017(自然人)、NTRMN-1234567(组织)
documentNumber 注册时返回的 UUID
registrationNumber 蒙古国登记号(МА74101813)—— 推送查找时解析
civilId 身份证号

RP 客户端示例:web/src/lib/rpclient.ts(可运行的 TypeScript 实现)。