用途:在设计 API 认证鉴权与权限矩阵时使用,覆盖多角色权限系统、多租户隔离、字段级权限以及第三方 OAuth 集成。资料参考 OAuth 2.0 RFC 6749、JWT RFC 7519 与 RBAC 模型。
核心区分:认证解决“你是谁”,失败返回 401;鉴权解决“你能做什么”,失败返回 403;租户隔离判断“你在哪个组织”;资源归属判断资源属于谁,用户只能操作自己的资源。即使有角色权限,仍需检查资源归属。
认证方式:Bearer Token(最常见,常用 JWT)、API Key(Header 或 Query,Query 不推荐)、OAuth 2.0(第三方接入,authorization_code 流程)、Session Cookie(同站调用,需 CSRF 防护)、Basic Auth(仅内部)。JWT 结构为 header.payload.signature,标准 claims 含 iss、sub、aud、exp、iat、jti,可加 user_id、email、roles、tenant_id 等自定义字段。注意 JWT 只能验证不能撤销(除非加 jti 黑名单)、建议短过期时间 15min~1h 配 refresh token、不要存敏感信息。
权限模型:RBAC 为用户→角色→权限,含 admin、manager、employee、guest 等角色及 users:read 等权限;ABAC 基于用户、资源、环境属性,适合复杂权限场景。权限矩阵按操作和角色列出,标注 self(仅自己)、team(本团队/组织)、all(所有)。字段级权限通过响应序列化按角色筛选字段,如普通用户脱敏手机号,管理员可见内部字段。
多租户隔离:可用 URL 显式(/api/v1/orgs/{org_id}/users)、Header(X-Tenant-Id)或从 token 提取(推荐)。任何方式都要服务端验证 user.tenant_id == resource.tenant_id。
工作流程:选认证方式→列角色→列操作→画权限矩阵→设计租户隔离→标注字段权限→设计错误处理(401/403/404)→输出鉴权说明。
限制与常见坑:把权限简化为“需要登录”、只查角色不查归属、忘记 tenant_id 过滤、JWT 过期过长、敏感信息进 payload、API Key 放 URL、403 与 404 泄露资源存在性、字段权限缺失靠前端隐藏。配套模板为 templates/auth-permission-template.md。