Gerege SSO¶
Production · Давхарга 2 — Танилт / SSO ·
Репо: sso-gerege-mn · sso.gerege.mn
Хувийн хэвшлийн шугамын OAuth2 / OpenID Connect provider. Экосистемийн апп-ууд болон 3 дагч талын relying party (RP)-ууд иргэдийг энд нэвтрүүлнэ.
Nexus дээрх Gerege SSO — өөр зүйл
2026-08-нд Gerege Nexus-ээс салаалсан sso-gerege-nexus нэртэй
шинэ репо гарсан бөгөөд түүнийг мөн «Gerege SSO» гэж нэрлэдэг. Энэ хуудсанд
бичигдсэн зан төлөв нь production дээр ажиллаж буй sso-gerege-mn кодыг
тайлбарлана. Шинэ салаа нь өөрийн домэйн аваагүй тул sso.gerege.mn дээрх
гэрээ өөрчлөгдөөгүй — RP-ууд юу ч засах шаардлагагүй.
Гурван үүрэг¶
1. Identity provider¶
RP-ууд Sign in with Gerege хийж чадна. Дэмждэг зүйлс:
| Боломж | Тайлбар |
|---|---|
| Authorization code + PKCE (S256) | Үндсэн урсгал; public client-д ч аюулгүй |
| Rotating refresh token | Reuse detection-той — хуучин токен дахин ашиглагдвал бүх гинжийг хүчингүй болгоно |
client_credentials |
Машин-машин интеграц |
| Access token | Opaque — агуулга нь RP-д ил биш |
id_token |
RS256 гарын үсэгтэй JWT |
| Discovery | /.well-known/openid-configuration |
| UserInfo | /userinfo |
2. eID proxy¶
Апп-ууд eID Mongolia рүү шууд ханддаггүй. Зөвшөөрөгдсөн eID үйлчилгээг SSO нь прокси хийж, зөвхөн бүртгэлтэй апп руу дамжуулна.
Учир нь: eID-ийн credential нэг л газар амьдарч, аудитын мөр нэг л гинжээр өрнөнө. Апп бүрт eID credential тараавал ротаци хийх, хүчингүй болгох, хэн юу хийснийг мөшгих боломжгүй болно.
3. Апп бүртгэлийн цорын ганц газар¶
OAuth client болон client secret зөвхөн энд үүсдэг, зөвхөн энд хадгалагдана. Developer Portal ч гэсэн client үүсгэдэггүй — зөвхөн заавар өгч, SSO консол руу гүн холбоос хийнэ.
Яагаад нэг газар вэ?
Credential хоёр системд зэрэг амьдарвал хэзээ нэгэн цагт зөрнө: нэг талд устгагдсан client нөгөө талд ажилласаар байх, secret ротаци хийсэн нь нөгөө талд хүрэхгүй байх гэх мэт. Нэг эх сурвалж байхаас өөр найдвартай арга байхгүй.
Нэвтрэх аргууд¶
| Арга | Тайлбар |
|---|---|
| eID | Үндсэн арга — QR код / мобайл deep-link / регистрийн дугаараар push |
| Дагалдах — эхний удаа заавал eID-ээр баталгаажуулж бодит хүнтэй холбоно |
Нууц үг байхгүй. И-мэйл/OTP нэвтрэлт мөн байхгүй. Энэ бол зориудын шийдвэр: нууц үг байхгүй бол нууц үг алдагдахгүй.
Хажуугийн үйлчилгээ¶
Тэр л репо доор ажилладаг холбогдох гарцууд:
-
dan.gerege.mn— DAN танилтын гарц. -
gsign.gerege.mn— гарын үсгийн гарц. -
xyp.gerege.mn— ААН / улсын бүртгэлийн лавлагаа.
Session ба logout¶
- Session нь JWT access + refresh хосоор явна; refresh нь эргэлддэг (rotation).
- Logout нь refresh болон access хоёуланг хүчингүй болгоно (access deny-list).
- Logout хийсэн хэрэглэгч нь эхлүүлсэн домэйн дээрээ буцаж очно —
/loginруу шидэгдэхгүй. Энэ нь RP-ийн хэрэглэгчийн урсгалыг тасалдуулахгүй байх дүрэм.
Архитектурын түүх — Hydra-гүй болсон нь¶
Өмнө нь SSO нь Ory Hydra-г OIDC provider болгон ашигладаг байсан. Одоо тэрхүү
хамаарлыг бүрэн устгаж, шаардлагатай зарчмуудыг өөрийн Go код болгож бичсэн
(usecases/oidc). Тусдаа байсан Hydra өгөгдлийн сан нь үндсэн DB-тэй нэгтгэгдсэн.
Үр дүн:
- гадаад хамаарал нэгээр цөөрсөн,
- хоёр DB, хоёр migration гинж байсныг нэг болгосон,
- OIDC-ийн зан төлөвийг өөрсдөө хянадаг болсон (тухайлбал eID урсгалтай нягт уялдуулах).
Платформтой нэг кодтой¶
SSO нь тусдаа бичигдсэн систем биш — platform template-тэй яг ижил кодын
суурь дээр ажилладаг. Ялгаа нь ганц тохиргоо: AUTH_MODE=provider бол нэвтрэх
карт өөр дээрээ гарна, client бол дээд SSO руу шилжүүлнэ. Ижил Docker image
аль ч үүргээр боот хийнэ.
Дэлгэрэнгүй: Дундын код · Танилт ба эрх.
Нэгдэх (RP болох)¶
Ерөнхий алхмууд:
- Апп бүртгүүлэх — SSO консол дээр client үүсгэж,
client_id/client_secretавна. Redirect URI-г яг таг бүртгэнэ. - Discovery уншина —
/.well-known/openid-configuration-оос endpoint-үүдийг ав. - Authorization code + PKCE урсгалыг хэрэгжүүл.
- Токен солилцоно — code → access + refresh +
id_token. id_tokenшалгана — RS256 гарын үсэг,iss,aud,exp.- Хэрэглэгчийн мэдээлэл —
/userinfo.
Дэлгэрэнгүй урсгал, шалгах жагсаалтыг Танилт ба эрх хуудаснаас үзнэ үү.
Redirect URI-г яг таг бүртгэ
OIDC-ийн хамгийн түгээмэл алдаа. Redirect URI нь тэмдэгт тэмдэгтээрээ
таарах ёстой — төгсгөлийн /, http vs https, порт бүгд чухал. Домэйн
өөрчлөх үед энэ жагсаалтыг шинэчлэхээ мартвал нэвтрэлт чимээгүйхэн унана.
Дэлгэрэнгүй баримт¶
Хэрэгжүүлэлтийн түвшний баримт (endpoint схем, DB загвар, RP бүртгэлийн админ
гарын авлага) нь sso-gerege-mn репо дотор байрлана.