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

API Gateway

Админ удирддаг service catalog ба хүсэлтийн телеметр. Платформ дээрх дотоод / гадаад service бүрийг бүртгэж, апп-уудад OAuth scope-оор олгож, дуудлагын статистикийг цуглуулна.

UI: /admin/gateway/overview, /admin/gateway/services, /admin/gateway/logs. Эрх: gateway.manage.

Service catalog

Endpoint Юу
GET /v1/gateway/services Service жагсаалт
POST /v1/gateway/services Шинэ service
PUT /v1/gateway/services/{id} Засах / enable · disable
DELETE /v1/gateway/services/{id} Устгах

Service бүр дараах талбартай:

Талбар Жишээ Тайлбар
name eid-proxy Танигч нэр
protocol · host · port · path https · sso.gerege.mn · 443 · /rp/eid Upstream
tags ['eid','sign'] Ангилал
scope svc:eid-proxy OAuth scope — апп-д олгох нэгж
enabled true Унтраахад route 503 буцаана

Scope нь олголтын нэгж

Апп-д service олгоно гэдэг нь тухайн апп-ын OAuth client-ийн allowed scope-д svc:<name>-ийг нэмнэ гэсэн үг. Тиймээс олголт нь токен дээр биелэж, цуцлалт шууд хүчинтэй болно.

Телеметр

Endpoint Юу
GET /v1/gateway/overview Хүсэлтийн тоо, алдааны хувь, latency
GET /v1/gateway/logs Хүсэлтийн лог (gateway_request_logs)

Gateway middleware (middleware_gateway_log.go) нь proxy-лагдсан дуудлага бүрийг бүртгэнэ: service, статус, үргэлжлэх хугацаа, дуудагч апп. Хувийн өгөгдөл лог-д бичигддэггүй.

Application (RP) бүртгэл

applications модуль нь OAuth2 client-ийн нэгдсэн бүртгэл — RP болон machine-to-machine хоёуланг хамарна. Хуучин gateway consumer / API key загварыг энэ орлуулсан.

Endpoint Юу
GET/POST /v1/applications Жагсаах / үүсгэх
GET/PUT/DELETE /v1/applications/{id} Унших / засах / устгах
POST /v1/applications/{id}/rotate-secret Secret эргүүлэх
PUT /v1/applications/{id}/secret Secret тавих
PUT /v1/applications/{id}/services Service олгох (scope шинэчлэгдэнэ)

UI: Admin → Applications.

applications ──┐
               ├── application_services ──► gateway_services.scope
oauth_clients ─┘                              (svc:eid-proxy …)

Хандалтын шалгалтын дараалал

Апп нь gateway-ээр хамгаалагдсан service рүү хандахад:

graph TD
  A["Хүсэлт + Bearer token"] --> B{"Introspect: active?"}
  B -->|үгүй| E401["401"]
  B -->|тийм| C{"client-д svc:* scope олгогдсон уу?"}
  C -->|үгүй| E403["403"]
  C -->|тийм| D{"service enabled?"}
  D -->|үгүй| E503["503"]
  D -->|тийм| OK["200 — upstream руу дамжина"]

Seed өгөгдөл

Хоосон үед дараах service-ууд суудаг:

Service Upstream Scope
dan-sso https://sso.gerege.mn/oauth2 svc:dan-sso
eid-sign https://sso.gerege.mn/rp/sign svc:eid-sign

Мөн жишээ RP-үүд (template-dgov-mn, developer-dgov-mn) бүртгэгдэж, тэдэнд eid-sign service олгогдоно.

SQL нь OAuth client-ийг бүрэн үүсгэхгүй

Seed нь applications мөрийг л оруулна. OAuth-ыг бүрэн идэвхжүүлэхийн тулд admin UI-аас secret эргүүлж (эсвэл дахин үүсгэж) өгнө.

RLS-гүй яагаад вэ?

Gateway-ийн хүснэгтүүд нь тохиргоо ба телеметр — иргэн тус бүрийн өгөгдөл биш. Хамгаалалт нь HTTP давхаргад: бүх endpoint gateway.manage эрх шаардана.

Холбогдох