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 的真实请求(方法、路径、状态码、延迟),
并在 管理 → 网关 → 概览 / 日志 中展示。
新增一个代理服务(面向开发者)¶
按以下模式即可把其他内部服务接入网关,并在管理端进行管理:
- 通过迁移脚本插入一条
gateway_services记录 — 名称、路径、标签。 - 在路由上用
gatewayUC.ServiceEnabled(name)检查运行时开关。 - 在 OAuth 中间件中检查
svc:<name>授权。 - 在 nginx 中添加公开路径(
/rp/<name>/→ 后端)。