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)。 - 每个请求的请求体:
relyingPartyUUID、relyingPartyName、certificateLevel(QUALIFIED|ADVANCED|QSCD)、signatureProtocol(ACSP_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 还会额外返回 sessionToken、sessionSecret 与 deviceLinkBase,
其中的 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)、hashType(SHA256|SHA384|SHA512)。
5. 轮询会话(长轮询)¶
-RUNNING —— 处理中
- COMPLETE + result.endResult=OK → signature.value(分离式签名)、cert.value(X.509)
- COMPLETE + 其他 endResult(USER_REFUSED、TIMEOUT 等)→ 被拒绝
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 实现)。