Платформын чадвар
Энэ хуудас нь хоёр байрлуулалт хоёулаа юуг үнэгүй авдаг вэ гэдгийг
жагсаана. Доорх бүх зүйл Gerege Nexus
цөмийнх — dgov.mn доор нэг ч мөр нь хуулагдаагүй, нэг ч мөр нь дахин
бичигдээгүй. Байрлуулалт бүр цөмөөс юуг нэмж байгаагаараа ялгагдана
(Архитектур).
Цөмийн хувилбар өнөөдөр backend/v1.9.1. Тэр тоо хоёр газарт бичигдэнэ:
sso-dgov-mn-ийн go.mod
болон open-dgov-mn-ийнх.
1. Танилт — хүн хэн болохоо хэрхэн батлах
| Арга | Хаана | Тайлбар |
|---|---|---|
| Үндэсний E-ID | POST /api/v1/auth/eid/login |
Тоон гарын үсэг (PKI), Mobile OTP, банкны суваг, царай танилт. Гэрчилгээний түвшин тохируулагдана — dgov.mn дээр нэвтрэлт ADVANCED, гарын үсэг QUALIFIED |
| ДАН | POST /api/v1/auth/dan/login |
Төрийн нэгдсэн гарц |
| И-мэйл + нууц үг | POST /api/v1/auth/login |
Argon2id hash. sso.dgov.mn дээр асаалттай, open.dgov.mn дээр унтраалттай |
| Өөр суулгацын SSO | /api/v1/auth/sso/* |
Энэ платформ өөрөө OIDC клиент болж чадна — open.dgov.mn яг үүнийг хийдэг |
GOOGLE_LOGIN_CLIENT_ID |
Тохируулаагүй бол товч нь огт харагдахгүй. dgov.mn дээр тохируулаагүй |
Session токен нь өгөгдлийн санд зөвхөн hash хэлбэрээр хадгалагдана: санг
уншсан хүн сесс хулгайлж чадахгүй. Токен нь HttpOnly cookie эсвэл
Authorization: Bearer толгойгоор дамжина.
E-ID / ДАН / ХУР-ын mock горим ENVIRONMENT=production үед автоматаар
унтарна — хуурамч иргэний мэдээллээр нэвтрэх зам production дээр байхгүй.
2. Эрх — хэн юуг хийж болох
- Тенант (байгууллага) бүр өөрийн орчинтой. Хүн олон байгууллагад
харьяалагдаж,
POST /api/v1/auth/switch-tenant-аар сессээ шилжүүлнэ. - Роль ба зөвшөөрөл байгууллагаараа тусгаарлагдана. Гишүүн бүр
userролийг автоматаар авна — тэр роль хэний ч гараар өгөгдөөгүй эрх учраас эрхийн дахин баталгаажуулалт түүнийг ч хамруулдаг. - Тусгаарлалт нь аппын кодын сахилга бат дээр биш, өгөгдлийн санд — PostgreSQL-ийн мөрийн түвшний хамгаалалт (RLS). Асуулга бүр байгууллагаараа хязгаарлагдана; модуль бичигч үүнийг санах шаардлагагүй, санахаа мартах ч боломжгүй.
- Модулийн эрх нь модулийнх. Модуль
RoutePermissionPrefix()-ээр эрхээ зарлавал платформ GET-ийг<prefix>.read, өөрчлөлт хийх бүх хүсэлтийг<prefix>.manage-ээр хаана.
3. Апп стор — код байх нь суусан гэсэн үг биш
Модулиуд нэг Go бинарид компиллогдоно, харин аль тенантад аль нь идэвхтэй
болохыг өгөгдлийн сан шийднэ (app_installations). Суулгаагүй апп руу хандвал
403 буцна — код нь байгаа ч хаалга нь хаалттай.
POST /api/v1/store/apps/{slug}/install суулгах (админ)
GET /api/v1/store/apps каталог
GET /api/v1/menus тенантад идэвхтэй цэсүүд
- Хамаарал шийдвэрлэх хөдөлгүүр — DAG дээр рекурсив шийдвэрлэлт, мөчлөг илрүүлэлт, semver шалгалт.
- Каталог нь цорын ганц эх сурвалж. Платформ өөрийн компилдсэн модулиудтайгаа зөрчилдсөн каталог дээр асахаа болино — бүрэн бүтэн байдал нь анхааруулга биш, асалтын алдаа.
- Chronicle — апп бүрийн хувилбарын түүх, «энэ шинэчлэлт юу өөрчилсөн» гэсэн нэг өгүүлбэр, монгол/англи хоёроор.
4. OAuth2 / OpenID Connect провайдер
sso.dgov.mn энэ чадварын дээр баригдсан (дэлгэрэнгүй).
GET /.well-known/openid-configuration discovery
GET /.well-known/jwks.json гарын үсгийн нийтийн түлхүүр
GET /oauth2/auth authorization endpoint
POST /oauth2/token токен (code, refresh, client_credentials)
POST /oauth2/introspect токен идэвхтэй эсэх
POST /oauth2/revoke токен цуцлах
GET /oauth2/userinfo нэвтэрсэн хүний claim-ууд
GET /oauth2/logout RP-initiated logout
- PKCE (S256) урсгал бүр дээр заавал. Нууц үг хадгалж чаддаггүй клиент (SPA, мобайл) нууцгүйгээр л ажиллана — «нэг төхөөрөмж дээр тарсан нууц» гэж байхгүй.
- Код нэг удаагийнх. Дахин ашиглах оролдлого SQL-ийн
UPDATE-ийн нөхцөлөөр таслагдана, аппын кодын шалгалтаар биш. - Refresh токен эргэлддэг. Хуучин токеныг дахин ашиглавал тэр гэр бүлийн бүх токен цуцлагдана — хулгайлагдсан токен нэг л удаа ажиллана.
- Redirect хаяг яг таг тааралдана. Wildcard байхгүй, дэд домэйн өвлөгдөхгүй (SSO-д холбогдох).
- Scope бүр иргэнд хэлэгддэг. Зөвшөөрлийн дэлгэц scope тус бүрийн утгыг
монгол, англи хоёроор бичнэ;
erp.read/erp.writeнь «эмзэг» гэж тэмдэглэгддэг.
| Scope | Юу нээх |
|---|---|
openid |
Хэн болохыг баталгаажуулна |
profile |
Нэр, бүртгэлийн мэдээлэл |
email |
И-мэйл хаяг |
phone |
Утасны дугаар |
offline_access |
Refresh токен — та байхгүй үед ч холболт хадгалагдана |
erp.read / erp.write |
Байгууллагын ERP өгөгдөл (эмзэг) |
5. Төрийн дэд бүтэц
- ХУР (XYP) — иргэний бүртгэл (
WS100101), хуулийн этгээдийн баталгаажуулалт (WS100201). Клиент нь платформд, хүнд харагдах нүүр ньegovапп: лавлагаа, сувгийн төлөв, лавлагааны түүх. - E-ID Mongolia — нэвтрэлт ба PIN2-оор хуулийн хүчин төгөлдөр цахим гарын үсэг.
- ДАН — төрийн нэгдсэн нэвтрэлтийн гарц.
- Өртөө (Urtuu) — суулгац хоорондын гарын үсэгтэй мессежийн ринг: нэг суулгацаас нөгөө рүү баталгаатай хүсэлт дамжуулна. Хэнтэй холбогдохыг оператор шийднэ, модуль биш.
6. Баримт бичиг ба гарын үсэг
- Цахим баримт, батламжийн урсгал, хувилбарын түүх (
documentsапп). - PAdES стандартын PDF гарын үсэг: eID-ийн PIN2 (иргэний гарын үсэг) эсвэл Gerege eSign HSM (байгууллагын тамга).
- Багц баталгаажуулалт, гарын үсгийн лог, гадны шалгагчид зориулсан баталгаажуулалтын хуудас.
7. Тайлан ба аналитик
reportsапп — тенантын өгөгдөл дээрх тайлан, Excel/CSV экспорт.- Тайлан хуваалцах: хугацаатай, эрхээр хязгаарласан холбоос.
- AI туслах (
platform/ai) — тенантын бодит төлөвт холбогдсон харилцан яриа, зорилго ангилдаг.GEMINI_API_KEYхоосон бол AI-гийн дэлгэцүүд «боломжгүй» гэж хариулна, платформ хэвийн асна.dgov.mnдээр тохируулаагүй.
8. Найдвартай ажиллагаа
| Механизм | Юу хийдэг |
|---|---|
| Circuit breaker | Google SRE загварын дасан зохицох таслуур |
| Load shedder | Ачаалал хэтэрсэн үед 503 + Retry-After |
| Singleflight | Давхардсан хүсэлтийг нэгтгэж, кэшийн ачааллыг бууруулна |
| Retry | Экспоненциал ухралт |
/health, /ready |
Амьд ба бэлэн байдал — deploy скрипт хоёуланг шалгана |
/metrics |
Prometheus хэмжүүрүүд |
Аудит. Хэн юуг хэзээ өөрчилснийг эхний өдрөөс бичнэ. Сесс таслалт бүр хэн тасалсан, яагаад гэдгээ үлдээнэ.
Хурдны хязгаарлалт. nginx дээр нэвтрэлтэд 5r/m, OAuth солилцоонд 30r/m;
цөм өөрөө TRUST_PROXY_HEADERS асаалттай үед бодит IP-г уншина — эс тэгвэл
хүн бүр nginx мэт харагдана.
9. Хэл — монгол хэл эх сурвалж
Монгол хэл + НҮБ-ын албан ёсны 6 хэл (араб, хятад, англи, франц, орос, испани). Програм хангамж монгол, англи хоёроор ирж, үлдсэнийг нь Тохиргоо → Харагдац дотроос асаана. Орчуулга дутуу үлдсэн түлхүүр дээр CI унана.
Байрлуулалт өөрийн үгсээ BRAND_COPY_FILE-аар дарж бичнэ — landing page-ийн
өгүүлбэрүүд, мөн өөрийн нэр нь хэл тус бүрээр:
{
"brand.name": { "mn": "Засгийн газрын нэгдсэн нэвтрэлт",
"en": "Government Single Sign-On" },
"brand.short_name": { "mn": "Нэгдсэн нэвтрэлт", "en": "Single Sign-On" },
"brand.description": { "mn": "…", "en": "…" }
}
Бичээгүй хэл нь BRAND_NAME-ийн утгыг уншина. Хэлний сонголт хөтчийн
localStorage ба cookie хоёуланд бичигддэг: сүүлийнх нь табын гарчиг,
тайлбар, launcher-ийн нэрийг зөв хэлээр гаргахын тулд — тэдгээр нь серверт
үүсдэг тул localStorage хүрдэггүй.
10. Бүрхүүл ба клиентүүд
- Нэг бүрхүүл, бүх суулгацад. Distribution нь frontend-ээ fork хийдэггүй: цэс, модулийн дэлгэцүүд каталогоор явдаг тул ерөнхий бүрхүүл шинэ бүтээгдэхүүнийг аль хэдийн зурдаг. Бүрхүүл API-гийн хаягаа өөрийн origin-оос олно — нэг образ, зуун домэйн.
- PWA —
/manifest.webmanifest, хөтчөөс шууд суулгана. - Native бүрхүүлүүд — Swift (macOS/iOS), C# (Windows/kiosk/POS), Kotlin
(Android). Бүрхүүл нь session, цэс, төхөөрөмжийн хандалтыг эзэмшиж, вэб
клиент нь ажлын муж болж рендерлэгдэнэ (
window.GeregeShellгэрээ). - Брэнд ажиллах үедээ уншигдана — нэр, лого, өнгө, icon, landing-ийн хэсгүүд бүгд тохиргоо. Образ өөрийн нэрийг мэддэггүй нь санаатай: нэрээ мэддэг образ бол нэг захиалагчийн эзэмшдэг образ.
11. Юу энд байхгүй вэ
Цөм нь илүү олон апп агуулдаг — харилцагч, бараа, агуулах, нэхэмжлэх, POS —
гэвч тэдгээр нь бизнесийн distribution-ы сэдэв
(business-gerege-nexus).
dgov.mn доорх хоёр суулгац тэднийг каталогтоо ч оруулаагүй: суулгацын
каталог нь «энэ бүтээгдэхүүн юуны тухай вэ» гэсэн мэдэгдэл бөгөөд төрийн
нэвтрэлтийн систем дээр бараа материалын апп санал болгох нь тэр мэдэгдлийг
худал болгоно.
Дараагийн хуудас: sso.dgov.mn — нэвтрэлтийн бүтээгдэхүүн юу нэмдэг вэ · open.dgov.mn — төрийн орчин юу нэмдэг вэ