API-шлюз¶
API-шлюз — это каталог сервисов + телеметрия, управляемые из системы администратора. Каждый публикуемый сервис (например, прокси eID) регистрируется в каталоге и выдаётся приложениям индивидуально.
Каталог сервисов¶
| Сервис | Путь | Тип | Выдача доступа |
|---|---|---|---|
| Вход через SSO | /oauth2 |
Базовый (встроенный) | Автоматически всем приложениям |
eid-sign |
/rp/sign |
Дополнительный | Выдаётся по приложениям |
eid-proxy |
/rp/eid |
Дополнительный | Выдаётся по приложениям |
eid-org-proxy |
/rp/eid-org |
Дополнительный | Выдаётся по приложениям |
Входа через SSO нет в каталоге
Вход через SSO — базовый сервис: он автоматически доступен каждому зарегистрированному приложению через базовые OIDC-scope, поэтому выдача и галочка ему не нужны. Как выдаваемый сервис шлюза он не отображается.
Управление сервисами (админ)¶
В разделе Админ → Шлюз → Сервисы вы просматриваете, создаёте, изменяете и
включаете/отключаете сервисы. При создании сервиса автоматически выводится
scope svc:<name>, чтобы его можно было выдавать приложениям.
- Флаг enabled действует в рантайме: маршрут прокси eID проверяет, включён ли
сервис, и возвращает
503, когда он отключён.
Выдача сервиса приложению¶
В разделе Админ → Приложения → приложение → SERVICES сервисы выдаются
галочками. Выдача добавляет svc:<name> в разрешённые scope OAuth2-клиента
приложения; отзыв — убирает. Это действует мгновенно — прокси проверяет
текущую выдачу у клиента.
Приложение "gerege.mn"
├─ Вход через SSO ......... автоматически (встроено)
├─ [x] eid-sign ........... svc:eid-sign
├─ [ ] eid-proxy .......... не выдан → /rp/eid → 403
└─ [ ] eid-org-proxy ...... не выдан → /rp/eid-org → 403
Телеметрия¶
Шлюз записывает реальные запросы к /api (метод, путь, статус, задержка) и
показывает их в разделе Админ → Шлюз → Обзор / Логи.
Добавление нового прокси-сервиса (для разработчиков)¶
Используйте этот шаблон, чтобы добавить в шлюз другие внутренние сервисы и управлять ими из админки:
- Добавьте строку в
gateway_services(миграцией) — имя, путь, теги. - Проверьте рантайм-переключатель на маршруте через
gatewayUC.ServiceEnabled(name). - Проверьте выдачу
svc:<name>в OAuth-middleware. - Добавьте публичный путь в nginx (
/rp/<name>/→ бэкенд).