Skip to content

API 设计

API 设计:多租户架构和越权访问

OpenAPI 多租户场景:每个 API Key 绑定一个租户 ID,所有接口响应都根据 tenant_id 查询隔离数据

多租户设计重点:

  1. 租户 ID 强绑定:用户请求必须带上身份来源(Token 里或 Header)
  2. 数据隔离:数据库查询必须带 WHERE tenant_id = ?
  3. 权限隔离:租户 A 管理员不能操作租户 B 的账号
  4. 配置隔离:不同租户支持个性化配置(品牌色、功能开关等)
  5. 审计日志:记录每个租户的操作,方便问题溯源

越权访问:水平越权和跨租户访问

名称解释
水平越权A 用户访问了同权限 B 用户的数据(同一个租户)
跨租户访问A 用户访问了属于 B 租户的数据(不同租户)

“我们系统是标准的多租户架构,每个租户的数据通过 tenant_id 做隔离,配合 RBAC 权限控制,避免了水平越权和跨租户访问。所有接口设计时都强制绑定资源归属验证,防止 ID 猜测造成的越权问题。” “我们落地了 RBAC 权限控制,结合租户隔离,所有资源访问都必须验证 tenant_id 和资源归属。接口层面封装了统一的资源校验逻辑,避免开发者遗漏。”

RBAC + 多租户 + 资源归属封装

API 设计:鉴权机制

  1. AK/SK
    • 推荐 HMAC-SHA256 签名方式
    • 包括 3 个 header: 1.AK 2.sign 3.timestamp
  2. AccessToken
    • Token 有效期,支持刷新机制。 如何设计刷新机制???
    • 推荐 JWT(JSON Web Token),含用户信息、权限范围、过期时间等。Authorization: Bearer eyJhbGciOi...
  3. APIKEY
    • 用 UUID 或哈希生成,存储时做加密处理
    • 可以为每个 key 配置:权限范围

API 设计:Webhook

TODO