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 эрх шаардана.
Холбогдох¶
- eID Service Proxy — gateway-ээр хамгаалагдсан бодит service
- OIDC provider — client бүртгэлийн нөгөө тал