بنقرة واحدة
auth-permission
设计 API 认证鉴权和权限矩阵时使用。适用于多角色系统、租户隔离、字段级权限。优先使用 OAuth 2.0 / JWT + RBAC + 资源归属检查。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
设计 API 认证鉴权和权限矩阵时使用。适用于多角色系统、租户隔离、字段级权限。优先使用 OAuth 2.0 / JWT + RBAC + 资源归属检查。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
设计具体 API 端点时使用。适用于资源建模后的下一步、列端点清单、HTTP 方法和状态码选择。优先使用 RFC 7231 HTTP 语义 + GitHub REST 命名规范。
设计 API 错误码和错误结构时使用。适用于错误响应规范、调用方错误处理、调试可观测。优先使用 RFC 7807 Problem Details + 业务错误码 + 调用方处理建议。
设计幂等接口和重试策略时使用。适用于支付、扣减、订单、关键写操作。优先使用 Idempotency-Key + 业务去重键 + 并发冲突处理(ETag/版本号)。
输出 OpenAPI 契约和 Mock 服务时使用。适用于 API 设计的最后一步、给前端/后端/QA 的交付。优先使用 OpenAPI 3.1 + Mock 数据覆盖所有路径 + 详细的下游交接清单。
设计列表接口的分页、筛选、排序、搜索时使用。适用于所有列表 API。优先使用 cursor 分页(大数据)或 offset 分页(小数据)+ 统一筛选/排序规范。
设计请求和响应结构时使用。适用于字段定义、校验规则、响应格式。优先使用 JSON:API 风格 + 字段稳定性 + 完整校验规则。
| name | auth-permission |
| description | 设计 API 认证鉴权和权限矩阵时使用。适用于多角色系统、租户隔离、字段级权限。优先使用 OAuth 2.0 / JWT + RBAC + 资源归属检查。 |
参考来源:OAuth 2.0 RFC 6749、JWT RFC 7519、RBAC 模型
认证(Authentication):你是谁?
- 验证身份
- 失败返回 401
- 例:token 无效 / 过期
鉴权(Authorization):你能做什么?
- 验证权限
- 失败返回 403
- 例:已登录但无权访问该资源
租户隔离:你在哪个组织?
- 跨组织数据隔离
- 失败返回 403 或 404
资源归属:这个资源属于谁?
- 用户只能操作自己的资源
- 失败返回 403 或 404
Authorization: Bearer eyJhbGc...
适用:用户 API、移动 App
实现:通常用 JWT
方式 1:Header
X-API-Key: sk_live_abc123
方式 2:Query(不推荐,易泄露)
/api/v1/users?api_key=xxx
适用:服务到服务、SDK、Webhook 验签
适用:第三方接入、开放平台
流程:
1. 用户授权(authorization_code)
2. 换取 token
3. 调用 API
Cookie: session=abc123
适用:浏览器同站调用
注意:CSRF 防护必备
Authorization: Basic base64(username:password)
适用:内部工具、最简单接入
不适用:公开 API
header.payload.signature
Payload 标准字段(claims):
iss: 签发者
sub: 用户 ID
aud: 接收方
exp: 过期时间
iat: 签发时间
jti: JWT ID(用于撤销)
自定义字段:
user_id: usr_abc
email: user@example.com
roles: ["admin", "developer"]
tenant_id: org_xyz
注意:
- JWT 只能验证不能撤销(除非加 jti 黑名单)
- 短过期时间(15min~1h)+ refresh token
- 不要存敏感信息(payload 可解码)
用户 → 角色 → 权限
角色示例:
- admin:所有权限
- manager:管理用户和订单
- employee:查看订单
- guest:仅查看公开资源
权限示例:
- users:read
- users:write
- users:delete
- orders:read
- orders:approve
基于属性的权限:
- 用户属性:部门 / 角色 / 权限组
- 资源属性:所有者 / 状态 / 标签
- 环境属性:时间 / IP / 设备
适用:复杂权限场景(如金融审批)
即使有权限,还要检查资源归属:
用户 A 是 manager,能 read orders
但只能 read 自己组织的 orders
不能 read 用户 B 的组织的 orders
实现:
WHERE tenant_id = current_user.tenant_id
AND owner_id = current_user.id -- 个人资源
## 权限矩阵:[模块名]
| 操作 | guest | user | manager | admin |
|------|-------|------|---------|-------|
| 查看公开商品 | ✅ | ✅ | ✅ | ✅ |
| 查看自己订单 | ❌ | ✅ self | ✅ team | ✅ all |
| 创建订单 | ❌ | ✅ | ✅ | ✅ |
| 取消订单 | ❌ | ✅ self | ✅ team | ✅ |
| 修改订单状态 | ❌ | ❌ | ✅ team | ✅ |
| 退款 | ❌ | ❌ | ❌ | ✅ |
| 删除用户 | ❌ | ❌ | ❌ | ✅ |
注:
self = 仅自己的资源
team = 仅本团队/组织的
all = 所有
不同角色看到的字段不同:
GET /users/{id}
普通用户看自己:
{
"id", "email", "name", "phone",
"address", "preferences",
"created_at"
}
管理员看任何用户:
{
"id", "email", "name", "phone",
"address", "preferences",
"ip_address", "last_login",
"risk_score", "internal_notes",
"created_at"
}
实现:响应序列化时根据角色筛选字段
方式 1:URL 显式
/api/v1/orgs/{org_id}/users
优点:明确
缺点:URL 长
方式 2:Header
X-Tenant-Id: org_xyz
优点:URL 简洁
缺点:易忘记设置
方式 3:从 token 提取(推荐)
JWT payload 含 tenant_id
服务端自动加过滤条件
优点:安全 + 简洁
缺点:跨租户场景需要特殊处理
任何方式都要服务端验证:
user.tenant_id == resource.tenant_id
## 认证鉴权设计:[API 模块]
### 认证方式
- 用户 API:Bearer Token (JWT)
- 过期时间:1 小时
- Refresh Token:30 天
- 服务到服务:API Key
- Webhook:HMAC 签名
### 角色定义
- guest:未登录
- user:普通用户
- manager:团队管理员
- admin:系统管理员
### 权限矩阵
[见上方表格]
### 租户隔离
- 方式:JWT 含 tenant_id,服务端自动过滤
- 跨租户:仅 admin 可通过 ?tenant_id= 显式指定
### 字段权限
- 普通用户:脱敏字段(手机号显示 138****8000)
- 管理员:完整字段 + 内部字段
### 错误处理
- 401:token 缺失/无效/过期 → token_invalid / token_expired
- 403:已认证但无权限 → permission_denied
- 404:(隐私考虑)资源不存在 → not_found
1. 选择认证方式(Bearer / API Key / OAuth)
2. 列出角色清单
3. 列出操作清单
4. 画权限矩阵
5. 设计租户隔离方式
6. 标注字段级权限(如有)
7. 设计错误处理(401 vs 403 vs 404)
8. 输出鉴权说明
□ 是否区分 401(认证)和 403(鉴权)
□ 权限矩阵是否覆盖所有角色和操作
□ 是否考虑了资源归属(不只看角色)
□ 是否考虑了多租户隔离
□ 字段级权限是否定义
□ Token 过期策略是否合理(不要太久)
□ 是否避免了 token 在 URL 中
□ 错误响应是否泄露隐私
templates/auth-permission-template.md — 权限矩阵 + JWT payload + 认证流程模板上游:
resource-modeling → 资源清单
endpoint-design → 端点清单
平行:
error-handling → 401/403 错误码细化
下游:
openapi-mock → 安全 schema
转交安全工程师 → 安全评审
转交后端 → 实现鉴权中间件
references/auth-permission-guide.md — 选型决策树、Token 类型对比、权限模型对比(RBAC/ABAC/ReBAC)、大厂范式(Stripe Keys / GitHub Fine-grained PAT / AWS IAM)、字段级权限、多租户三层防御、安全自检