Перейти к содержанию

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 (метод, путь, статус, задержка) и показывает их в разделе Админ → Шлюз → Обзор / Логи.

Добавление нового прокси-сервиса (для разработчиков)

Используйте этот шаблон, чтобы добавить в шлюз другие внутренние сервисы и управлять ими из админки:

  1. Добавьте строку в gateway_services (миграцией) — имя, путь, теги.
  2. Проверьте рантайм-переключатель на маршруте через gatewayUC.ServiceEnabled(name).
  3. Проверьте выдачу svc:<name> в OAuth-middleware.
  4. Добавьте публичный путь в nginx (/rp/<name>/ → бэкенд).