跳转至

分层架构

生态系统由五层构成。下层为上层服务;上层不了解下层的内部结构,只通过 下层的契约(contract)与之交互。

第 4 层 — 垂直产品 (vertical)
    ring.dgov.mn          Ring System — 流程再造
    hurdan.dgov.mn        「Khurdan」平台 — 服务交付与监管
    developer.gerege.mn   Developer Portal(另有 dgov 版本)
    wallet.gerege.mn      Gerege Wallet — 公民数字钱包

第 3 层 — 平台底座
  -- 第二代:Nexus — 模块化单体,应用商店
    nexus.gerege.mn       Gerege Nexus — upstream,8 个模块
    eduge.mn              Eduge.mn — 行业品牌分叉
    (域名待定)          Gerege SSO — 聚焦登录的分叉
  -- 第一代:Template — 每个仓库一个分叉
    template.gerege.mn    Gerege Template Platform
    template.dgov.mn      Government Template Platform V3.0(+ Node.js 移植版)
    gerege.mn             Gerege Platform(自身即 SSO 提供方)
    → Clean Architecture Go + Next.js BFF + Gemini AI 流水线

第 2 层 — 认证 / SSO (OIDC provider)
    sso.gerege.mn   Gerege SSO          sso.dgov.mn      Government SSO
    dan.gerege.mn   DAN Gateway         gsign.gerege.mn  G-Sign
    → 自研 Go OAuth2/OIDC 代码(已完全替代 Hydra),单一数据库
    → eID 代理:仅把获授权的 eID 服务转发给已注册的应用

第 1 层 — 身份 / PKI 内核
    eID Mongolia (eid-platform-mn)
    server (Go) · web · admin · iOS SDK · Android SDK · macOS/Windows
    2-of-2 门限 ECDSA · 双密钥 / 双证书(PIN1 登录 / PIN2 签名)
    CA · OCSP · CRL · TSA

第 0 层 — 数据交换
    X-Road 实例 MN — central server、各 security server
    周边服务:xyp.gerege.mn(法人主体查询)

第 0 层 — 数据交换

是什么:机构之间标准化的数据交换通道——X-Road (实例 MN)。

职责:成员机构以经过认证、带签名、带时间戳的方式互相调用服务。每台 security server 代表其所属成员,central server 则对信任清单(globalconf) 签名并分发。

特别关联:eID Mongolia 为 X-Road 承担 CA(证书颁发机构)职责—— 也就是说,第 1 层为第 0 层提供了信任根。

状态:部分完成 central server 与首批 security server 已上线运行,拓扑已确定;大规模推广仍在进行。

第 1 层 — 身份 / PKI 内核

是什么:eID Mongolia——国家级 eID 平台 (Smart-ID / eIDAS 风格)。

职责:识别公民与机构、完成登录,并让其能够作出具法律效力的签名。 同时覆盖证书的完整生命周期:签发(CA)、有效性校验(OCSP/CRL)、时间戳(TSA)。

关键设计:

  • 2-of-2 门限 ECDSA——签名私钥在任何一方都不完整存在。
  • 双密钥 / 双证书——PIN1 → 登录,PIN2 → 签名。
  • 标识符为 civil_id;ETSI ID 对自然人为 PNOMN-<civil_id>, 对机构为 NTRMN-<...>
  • KYC——通过 DAN 完成,并以人脸识别做活体检测。

谁在用:第 2 层(SSO)直接使用;第 3–4 层经由 SSO 使用。

状态:Production

第 2 层 — 认证 / SSO

是什么:OAuth2/OIDC 提供方——Gerege SSOsso.gerege.mn)与 Government SSO(sso.dgov.mn),以及周边服务 DAN GatewayG-Sign

三项职责:

  1. 身份提供方——RP 可以提供 Sign in with Gerege。支持 Authorization code
  2. PKCE (S256)、轮换式 refresh token(带重用检测)、client_credentials
  3. eID 代理——获授权的 eID 服务只转发给已注册的应用。应用不会直接访问 eID。
  4. 应用注册的唯一场所——OAuth client 与 client secret 只在此创建、只在此 存放。

不再依赖 Hydra

此前使用 Ory Hydra,现已把必需的机制改写为自研 Go 代码。原本独立的 Hydra 数据库已并入主库。由此同时降低了三项成本:外部依赖、迁移复杂度、 运维开销。

状态:Production

第 3 层 — 平台底座

这一层如今有两代。两代都在 production 运行,两者之间的迁移正在进行。

第二代 — Gerege Nexus Production

是什么:一个模块化单体平台——业务模块实现 Go 的 Module 契约并编译进 同一个二进制;某个租户启用了哪些应用,由 PostgreSQL 中的应用商店app_installations)决定。

变了什么:在第一代里,新产品意味着分叉模板。在 Nexus 上,新产品通常是 一个新模块——若是新品牌,则是从 upstream 分叉,并通过合并保持更新。

第一代(Template) 第二代(Nexus)
新产品 分叉模板 编写模块,或为品牌分叉
分发 每个仓库一套部署 按租户,通过应用商店
代码如何流动 open-gerege-core · @gerege/ui-core Upstream → 分叉从中合并
模块间调用 HTTP 进程内 Go 调用

现有分叉:nexus.gerege.mn(upstream,参考部署)· eduge.mn(教育行业)· Gerege SSO(聚焦登录层,尚无域名)。

随平台提供的八个模块:Contacts · Products · Inventory · Billing & e-Barimt · Digital Documents · Developer Portal · PDF E-Sign(eID PIN2)· 政务服务 (可配置流程、层级、SLA)。

Nexus 并不取代第 2 层

Nexus 自带 OAuth2/OIDC 提供方,但它服务的是该部署自己的租户与第三方客户端。 在整个生态系统范围内,识别公民的唯一途径仍然是第 2 层——Nexus 同样 从不直接触及 eID。

第一代 — Template Platform Production

是什么:Template Platform——用于构建数字服务、 可直接投产的底座;以及 Gerege Platform, 即能够自身充当 SSO 提供方的增强版本。

职责:启动一项新服务时,以下能力从第一天起即可用:

  • eID 与 Google 认证、会话(JWT access + refresh 轮换);
  • 组织与成员关系,并由 RLS 保护;
  • RBAC(superadmin → admin → manager → user)、审计日志;
  • API 网关(services / routes / consumers / API key / policy + 遥测);
  • AI 流水线(Gemini)——聊天、STT/TTS、翻译、知识库;
  • 严格的安全基线(CSP/HSTS、CORS 白名单、限流、RLS);
  • 可观测性(OpenTelemetry + Prometheus + 结构化日志)。

状态:Production

第 4 层 — 垂直产品

是什么:由 Template 分支出来的实际产品。

产品 用途 状态
Developer Portal API 目录、应用注册的入口 Production
Gerege Wallet 公民数字钱包 部分完成
Ring System 政务服务流程再造 部分完成
「Khurdan」平台 服务交付与监管 Production

Ring 与 Khurdan 运行在政务线上。

依赖规则

生态系统的全部代码都遵循以下依赖方向:

graph TD
    L4["第 4 层 — 垂直产品"] --> L3["第 3 层 — 平台底座"]
    L3 --> L2["第 2 层 — SSO / OIDC"]
    L2 --> L1["第 1 层 — eID / PKI"]
    L2 -.->|"查询"| L0["第 0 层 — X-Road"]
    L1 -.->|"CA 职责"| L0

规则:不得跨层直接访问。例如第 4 层的应用不会直接访问 eID——必须经由 SSO。这样既把凭据集中在一处,也保证审计链路不被打断。

唯一被允许的「向下」连接是 eID 为 X-Road 承担 CA 职责;它构成信任根, 因此不受分层规则约束。