BeeX 文档导航

管理后台 · 鉴权方案

🟡 待完成 · 开发阶段暂缓,接真实用户 / 上 prod 前必做
v0.1 · 2026-06-05 · 目标:飞书 SSO + 后端 JWT + 按国家 RBAC

一、现状(问题)

⚠ 当前:admin 后端零鉴权 · 公网裸奔 没引 Spring Security、没 filter/interceptor、controller 无权限校验;admin 前端不带任何 token、无登录页。 实测:从外网不带鉴权直接调 admin-api-id-test/api/v1/admin/users 即返回真实用户数据(含手机号)。 谁知道域名就能在公网读全量用户 PII、调写接口(发券 / 改配置 / 提现审批代理)。

架构上 admin 前端是「一套、按 env 切换按钮选国家后端」。那个按钮只是前端选择器、不是安全边界——真正的门必须落在每个国家的 admin 后端各自鉴权。

二、目标方案

运营用飞书账号登录(团队已在用飞书,集中管人 + 可上 MFA),后端签发 JWT,每个 admin 接口校验身份 + RBAC 权限,并校验「该运营能否操作这个国家 / 这个环境」。

做什么
登录飞书 OAuth/OIDC 授权登录,拿到运营的飞书身份
会话后端校验飞书 code → 查角色 → 签发 JWT(短期)+ 刷新机制
鉴权每个 admin 接口校验 JWT;过滤器/拦截器统一拦,而非逐接口写
授权(RBAC)角色 → 权限:查看 / 改价 / 发券 / 提现审批 …,并绑定可操作的国家 + 环境
多国家每条 admin-api-{country}-{env} 各自验,前端按钮切了也得后端放行

三、登录与鉴权流程

飞书 SSO 登录 + JWT 鉴权时序
sequenceDiagram
  autonumber
  participant O as 运营(浏览器)
  participant FE as admin 前端
  participant BE as admin 后端
  participant FS as 飞书 OAuth
  O->>FE: 打开后台
  FE->>FS: 跳转飞书授权
  O->>FS: 飞书账号确认 (可 MFA)
  FS-->>FE: 回调 code
  FE->>BE: 用 code 登录
  BE->>FS: 校验 code · 拉飞书身份
  BE->>BE: 查角色/权限(RBAC) · 签发 JWT
  BE-->>FE: 返回 JWT
  Note over FE,BE: 之后每个请求头带 Authorization: Bearer JWT
  FE->>BE: 调 admin 接口(带 JWT)
  BE->>BE: 校验 JWT + 能否操作此国家/环境/动作
  BE-->>FE: 放行 / 401·403
      

四、待完成清单(范围)

五、临时止血(若上线提前/需先挡公网)

正式方案落地前,如要先堵公网裸奔 admin-api 安全组 / 网关只放行 办公室 IP / VPN,或那台 ECS 的 nginx 前加 Basic Auth。 几分钟见效、基本不改代码,作为飞书 SSO 上线前的过渡。

本页随「全盘排查」更新状态。完成后把顶部徽章改为 ✅ 已完成,并在导航卡片同步。