Агуулгыг алгасах

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
Google Дагалдах — эхний удаа заавал eID-ээр баталгаажуулж бодит хүнтэй холбоно

Нууц үг байхгүй. И-мэйл/OTP нэвтрэлт мөн байхгүй. Энэ бол зориудын шийдвэр: нууц үг байхгүй бол нууц үг алдагдахгүй.

Хажуугийн үйлчилгээ

Тэр л репо доор ажилладаг холбогдох гарцууд:

  • DAN Gateway


    dan.gerege.mn — DAN танилтын гарц.

  • G-Sign


    gsign.gerege.mn — гарын үсгийн гарц.

  • Gerege Verify


    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 болох)

Ерөнхий алхмууд:

  1. Апп бүртгүүлэх — SSO консол дээр client үүсгэж, client_id / client_secret авна. Redirect URI-г яг таг бүртгэнэ.
  2. Discovery уншина/.well-known/openid-configuration-оос endpoint-үүдийг ав.
  3. Authorization code + PKCE урсгалыг хэрэгжүүл.
  4. Токен солилцоно — code → access + refresh + id_token.
  5. id_token шалгана — RS256 гарын үсэг, iss, aud, exp.
  6. Хэрэглэгчийн мэдээлэл/userinfo.

Дэлгэрэнгүй урсгал, шалгах жагсаалтыг Танилт ба эрх хуудаснаас үзнэ үү.

Redirect URI-г яг таг бүртгэ

OIDC-ийн хамгийн түгээмэл алдаа. Redirect URI нь тэмдэгт тэмдэгтээрээ таарах ёстой — төгсгөлийн /, http vs https, порт бүгд чухал. Домэйн өөрчлөх үед энэ жагсаалтыг шинэчлэхээ мартвал нэвтрэлт чимээгүйхэн унана.

Дэлгэрэнгүй баримт

Хэрэгжүүлэлтийн түвшний баримт (endpoint схем, DB загвар, RP бүртгэлийн админ гарын авлага) нь sso-gerege-mn репо дотор байрлана.