跳转至

API 网关

API 网关是一套由管理系统统一管理的服务目录 + 遥测。每个对外暴露的服务 (例如 eID 代理)都注册在目录中,并按应用逐个授权。

服务目录

服务 路径 类型 授权方式
SSO 登录 /oauth2 基础(内置) 所有应用自动获得
eid-sign /rp/sign 附加 按应用授予
eid-proxy /rp/eid 附加 按应用授予
eid-org-proxy /rp/eid-org 附加 按应用授予

SSO 登录不在目录中

SSO 登录属于基础服务 — 通过基础 OIDC scope 自动提供给每一个已注册应用, 因此不需要授权/勾选,也就不会作为可授予的网关服务显示出来。

管理服务(管理端)

管理 → 网关 → 服务 中可以列出、创建、编辑并启用/停用服务。 创建服务时会自动派生出 svc:<name> scope,以便授予各应用。

  • enabled 开关在运行时生效:eID 代理路由会检查服务是否启用,停用时返回 503

将服务授予应用

管理 → 应用 → 选中应用 → SERVICES 中通过复选框授予服务。 授予会向该应用的 OAuth2 客户端允许 scope 中加入 svc:<name>,撤销则移除。 此操作即刻生效 — 代理检查的是客户端当前的授权状态。

应用 "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. 在 OAuth 中间件中检查 svc:<name> 授权。
  4. 在 nginx 中添加公开路径(/rp/<name>/ → 后端)。