انتقل إلى المحتوى

البنية الطبقية

تتألّف المنظومة من خمس طبقات. الطبقة الأدنى تخدم التي فوقها؛ والطبقة الأعلى لا تعرف البنية الداخلية لما تحتها، ولا تتخاطب معها إلّا عبر عقدها (contract).

LAYER 4 — VERTICAL PRODUCTS
    ring.dgov.mn          Ring System — process re-engineering
    hurdan.dgov.mn        "Khurdan" platform — service delivery / oversight
    developer.gerege.mn   Developer Portal (dgov variant exists)
    wallet.gerege.mn      Gerege Wallet — citizen digital wallet

LAYER 3 — PLATFORM FOUNDATION
  -- 2nd generation: Nexus — modular monolith, app store
    nexus.gerege.mn       Gerege Nexus — upstream, 8 modules
    eduge.mn              Eduge.mn — sector brand fork
    (domain pending)      Gerege SSO — sign-in focused fork
  -- 1st generation: Template — a fork per repo
    template.gerege.mn    Gerege Template Platform
    template.dgov.mn      Government Template Platform V3.0 (+ Node.js port)
    gerege.mn             Gerege Platform (an SSO provider in its own right)
    → Clean Architecture Go + Next.js BFF + Gemini AI pipeline

LAYER 2 — AUTHENTICATION / SSO (OIDC provider)
    sso.gerege.mn   Gerege SSO          sso.dgov.mn      Government SSO
    dan.gerege.mn   DAN Gateway         gsign.gerege.mn  G-Sign
    → in-house Go OAuth2/OIDC code (Hydra fully replaced), single DB
    → eID proxy: authorised eID services only to registered apps

LAYER 1 — IDENTITY / PKI CORE
    eID Mongolia (eid-platform-mn)
    server (Go) · web · admin · iOS SDK · Android SDK · macOS/Windows
    2-of-2 threshold ECDSA · dual key / dual cert (PIN1 auth / PIN2 sign)
    CA · OCSP · CRL · TSA

LAYER 0 — DATA EXCHANGE
    X-Road instance MN — central server, security servers
    Adjacent service: xyp.gerege.mn (legal-entity lookups)

يُترك المخطّط النصّي بالإنجليزية ومن اليسار إلى اليمين: عكس اتجاهه يُفسد المحاذاة والمعنى التقني معًا. وتفصيل كل طبقة يأتي بالعربية أدناه.

الطبقة 0 — تبادل البيانات

ما هي: قناة مُوحّدة المعايير لتبادل البيانات بين الجهات — X-Road (النسخة MN).

الدور: تستدعي الجهات الأعضاء خدمات بعضها بعضًا بصورة موثَّقة وموقَّعة ومختومة زمنيًا. ويمثّل كل security server الجهة التابع لها، بينما يوقّع الـ central server قائمة الثقة (globalconf) ويوزّعها.

رابط خاص: تؤدّي eID Mongolia دور سلطة التصديق (CA) لـ X-Road — أي أنّ الطبقة 1 تمنح الطبقة 0 جذر الثقة.

الحالة: جزئي يعمل الـ central server وأوائل خوادم الأمان، والطوبولوجيا محدَّدة؛ ولا يزال التعميم على نطاق واسع جاريًا.

الطبقة 1 — نواة الهوية / PKI

ما هي: eID Mongolia — منصّة الهوية الإلكترونية الوطنية (على نمط Smart-ID / eIDAS).

الدور: التعرّف على المواطنين والجهات وتمكينهم من الدخول، ومن وضع توقيع ذي حجّية قانونية. إضافةً إلى دورة حياة الشهادة كاملةً: الإصدار (CA)، والتحقّق من الصلاحية (OCSP/CRL)، والختم الزمني (TSA).

القرارات الجوهرية:

  • ECDSA عتَبيّة 2-of-2 — لا يوجد المفتاح الخاص للتوقيع كاملًا لدى أي طرف.
  • مفتاحان وشهادتان — ‏PIN1 ← الدخول، وPIN2 ← التوقيع.
  • المُعرِّف هو civil_id؛ ومُعرِّف ETSI للشخص الطبيعي PNOMN-<civil_id> وللجهة NTRMN-<...>.
  • اعرف عميلك (KYC) — عبر DAN، مع فحص الحيوية بالتعرّف على الوجه.

من يستخدمها: الطبقة 2 (SSO) مباشرةً؛ والطبقتان 3–4 عبر الدخول الموحّد.

الحالة: Production

الطبقة 2 — المصادقة / SSO

ما هي: مزوّدا OAuth2/OIDC — Gerege SSO (sso.gerege.mn) وGovernment SSO (sso.dgov.mn)، إضافةً إلى الخدمتين المجاورتين DAN Gateway وG-Sign.

الدور — ثلاثة أمور:

  1. مزوّد هوية — يمكن للجهات المعتمِدة إتاحة Sign in with Gerege. Authorization code + PKCE (S256)، وrefresh token متجدّد (مع كشف إعادة الاستخدام)، وclient_credentials.
  2. وكيل eID — لا تُمرَّر خدمات eID المصرّح بها إلّا إلى التطبيقات المسجّلة. ولا يصل التطبيق إلى eID مباشرةً.
  3. الموضع الوحيد لتسجيل التطبيقات — يُنشأ عميل OAuth وسرّه هنا فقط، ولا يعيش إلّا هنا.

من دون Hydra

كان Ory Hydra مستخدَمًا سابقًا، ثم أُعيدت كتابة الآليات اللازمة بـشيفرة Go خاصة. ودُمجت قاعدة بيانات Hydra المنفصلة مع القاعدة الرئيسة. فانخفضت ثلاثة أمور دفعةً واحدة: الاعتمادات الخارجية، وتعقيد الترحيلات، وكلفة التشغيل.

الحالة: Production

الطبقة 3 — أساس المنصّة

صار لهذه الطبقة جيلان. وكلاهما في الإنتاج، والانتقال بينهما جارٍ الآن.

الجيل الثاني — Gerege Nexus Production

ما هي: منصّة على هيئة وحدة متراصّة معيارية — تنفّذ وحدات الأعمال عقد Module في لغة Go وتُصرَّف في ملف تنفيذي واحد؛ أمّا التطبيقات الفعّالة لدى مستأجر ما فيحدّدها متجر التطبيقات (app_installations) في PostgreSQL.

ما الذي تغيّر: في الجيل الأول كان المنتج الجديد يعني تفريعًا للقالب. أمّا في Nexus فالمنتج الجديد هو عادةً وحدة جديدة — أو، إن كان علامةً تجارية، تفريعًا للمصدر الأعلى يُحدَّث بالدمج منه.

الجيل الأول (Template) الجيل الثاني (Nexus)
منتج جديد تفريع القالب كتابة وحدة، أو تفريع لعلامة تجارية
التوزيع نشرة واحدة لكل مستودع لكل مستأجر، عبر متجر التطبيقات
كيف تنتقل الشيفرة حزمتا open-gerege-core · @gerege/ui-core المصدر الأعلى ← الفروع تدمج منه
الاستدعاء بين الوحدات HTTP استدعاءات Go داخل العملية

الفروع الحالية: nexus.gerege.mn (المصدر الأعلى، النشر المرجعي) · eduge.mn (قطاع التعليم) · Gerege SSO (متمحور حول طبقة الدخول، ولا نطاق له بعد).

الوحدات الثماني الجاهزة: Contacts · Products · Inventory · Billing & e-Barimt · Digital Documents · Developer Portal · التوقيع الإلكتروني للـ PDF (eID PIN2) · الخدمات الحكومية (سير قابل للتهيئة، وتسلسل هرمي، واتفاقيات مستوى خدمة).

Nexus لا يحلّ محلّ الطبقة 2

تحمل Nexus مزوّد OAuth2/OIDC خاصًّا بها، غير أنّه يخدم مستأجري تلك النشرة نفسها وعملاءها من الأطراف الثالثة. أمّا على مستوى المنظومة فيبقى الطريق الوحيد إلى تعريف المواطن هو الطبقة 2 — فحتى Nexus لا تصل إلى eID مباشرةً.

الجيل الأول — Template Platform Production

ما هي: Template Platform — أساس جاهز للإنتاج لبناء الخدمات الرقمية؛ وكذلك Gerege Platform، وهي النسخة الموسّعة القادرة على أن تكون بنفسها مزوّد دخول موحّد.

الدور: عند إطلاق خدمة جديدة تتوافر الأمور التالية من اليوم الأول:

  • المصادقة عبر eID وGoogle، والجلسات (JWT access + تجديد دوري للـ refresh)،
  • الجهات والعضويات، محميّة بـ RLS،
  • التحكّم بالصلاحيات RBAC (superadmin → admin → manager → user)، وسجل تدقيق،
  • بوابة API‏ (services / routes / consumers / API key / policy + قياس عن بُعد)،
  • مسار الذكاء الاصطناعي (Gemini) — محادثة، وSTT/TTS، وترجمة، وقاعدة معرفة،
  • أساس أمني صارم (CSP/HSTS، وقائمة سماح لـ CORS، وتحديد المعدّل، وRLS)،
  • قابلية الملاحظة (OpenTelemetry + Prometheus + سجلّات مُهيكَلة).

الحالة: Production

الطبقة 4 — المنتجات القطاعية

ما هي: المنتجات الفعلية المتفرّعة من القالب.

المنتج الغرض الحالة
Developer Portal كتالوج واجهات البرمجة ومدخل تسجيل التطبيقات 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 مباشرةً إطلاقًا، بل يمرّ حتمًا عبر الدخول الموحّد. وهذا يحقّق أمرين معًا: حصر بيانات الاعتماد في موضع واحد، وعدم قطع أثر التدقيق.

والرابط «النازل» الوحيد المسموح به هو دور eID بوصفها CA لـ X-Road؛ فهو جذر الثقة، ولذلك يُستثنى من قاعدة الطبقات.