返回顶部
a

auth-patterns认证授权模式

Authentication and authorization patterns — JWT, OAuth 2.0, sessions, RBAC/ABAC, password security, MFA, and vulnerability prevention. Use when implementing login flows, protecting routes, managing tokens, or auditing auth security.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
928
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

auth-patterns

认证模式 — 身份验证与授权

安全关键技能 — 认证是系统的门户。一旦出错,其他一切都无从谈起。

身份验证方法

方法工作原理最佳适用场景
JWT每次请求携带签名令牌单页应用、微服务、移动端API
基于会话
服务端存储会话,客户端持有Cookie | 传统Web应用、服务端渲染 | | OAuth 2.0 | 通过授权服务器进行委托认证 | 使用Google/GitHub登录、API访问 | | API密钥 | 在请求头中发送静态密钥 | 内部服务、公开API | | 魔法链接 | 通过邮件发送一次性登录链接 | 低门槛注册、B2C场景 | | 通行密钥/WebAuthn | 硬件/生物特征挑战-响应 | 高安全应用、无密码方案 |

JWT模式

双令牌策略

短生命周期访问令牌 + 长生命周期刷新令牌:

客户端 → POST /auth/login → 服务端
客户端 ← { accesstoken, refreshtoken }

客户端 → GET /api/data (Authorization: Bearer ) → 服务端
客户端 ← 401 已过期

客户端 → POST /auth/refresh { refresh_token } → 服务端
客户端 ← { newaccesstoken, rotatedrefreshtoken }

令牌结构

json
{
header: { alg: RS256, typ: JWT, kid: key-2024-01 },
payload: {
sub: user_abc123,
iss: https://auth.example.com,
aud: https://api.example.com,
exp: 1700000900,
iat: 1700000000,
jti: unique-token-id,
roles: [user],
scope: read:profile write:profile
}
}

签名算法

算法类型使用场景
RS256非对称(RSA)微服务 — 仅认证服务持有私钥
ES256
非对称(ECDSA) | 同RS256,密钥和签名更小 | | HS256 | 对称 | 单服务应用 — 所有验证者共享密钥 |

在分布式系统中优先使用RS256/ES256。

令牌存储

存储方式XSS安全CSRF安全推荐建议
httpOnly Cookie否(需添加CSRF令牌)Web应用最佳选择
localStorage
否 | 是 | 避免使用 — XSS会暴露令牌 | | 内存存储 | 是 | 是 | 适合SPA,刷新后丢失 |

Set-Cookie: access_token=eyJ...; HttpOnly; Secure; SameSite=Strict; Path=/; Max-Age=900

过期策略

令牌生命周期轮换机制
访问令牌5–15分钟刷新时重新签发
刷新令牌
7–30天 | 每次使用时轮换 | | ID令牌 | 与访问令牌一致 | 不进行刷新 |

OAuth 2.0流程

流程客户端类型使用场景
授权码 + PKCE公开客户端(SPA、移动端)所有公开客户端的默认方案
授权码
机密客户端(服务端) | 带后端服务渲染的Web应用 | | 客户端凭证 | 机器对机器 | 服务间通信、定时任务 | | 设备码 | 输入受限设备 | 智能电视、物联网、无头服务器CLI |

隐式流程已弃用。 公开客户端始终使用授权码 + PKCE。

PKCE流程

  1. 1. 客户端生成 codeverifier(随机43-128字符)
  2. 客户端计算 codechallenge = BASE64URL(SHA256(codeverifier))
  3. 重定向到 /authorize?codechallenge=...&codechallengemethod=S256
  4. 用户认证,服务端重定向返回授权码
  5. 客户端在 /token 端点交换 code + codeverifier 获取令牌
  6. 服务端验证 SHA256(codeverifier) == code_challenge

会话管理

服务端会话

客户端Cookie: session_id=a1b2c3d4(不透明、随机、不含用户数据)
服务端存储: { a1b2c3d4: { userId: 123, roles: [admin], expiresAt: ... } }

存储方式速度使用场景
Redis生产环境默认 — 支持TTL、水平扩展
PostgreSQL
中等 | 当Redis过于复杂,需要审计追踪时 | | 内存存储 | 最快 | 仅限开发环境 |

会话安全

威胁预防措施
会话固定登录后重新生成会话ID
会话劫持
httpOnly + Secure Cookie,绑定IP/用户代理 | | CSRF | SameSite Cookie + CSRF令牌 | | 空闲超时 | 无活动15–30分钟后过期 | | 绝对超时 | 8–24小时后强制重新认证 |

授权模式

模式粒度使用场景
RBAC粗粒度(管理员、编辑者、查看者)大多数应用 — 简单角色层级
ABAC
细粒度(属性:部门、时间、位置) | 企业级 — 上下文相关访问控制 | | 基于权限 | 中粒度(post:create、user:delete) | API — 将权限与角色解耦 | | 基于策略(OPA/Cedar) | 细粒度 | 微服务 — 外部化、可审计规则 | | ReBAC | 细粒度(所有者、成员、共享对象) | 社交应用、Google Drive式共享 |

RBAC实现

typescript
const ROLE_PERMISSIONS: Record = {
admin: [user:read, user:write, user:delete, post:read, post:write, post:delete],
editor: [user:read, post:read, post:write],
viewer: [user:read, post:read],
};

function requirePermission(permission: string) {
return (req: Request, res: Response, next: NextFunction) => {
const permissions = ROLE_PERMISSIONS[req.user.role] ?? [];
if (!permissions.includes(permission)) {
return res.status(403).json({ error: Forbidden });
}
next();
};
}

app.delete(/api/users/:id, requirePermission(user:delete), deleteUser);



密码安全


算法推荐等级内存硬性备注
Argon2id首选抵抗GPU/ASIC攻击
bcrypt
推荐 | 否 | 经过实战检验,72字节限制 |
| scrypt | 推荐 | 是 | 良好替代方案 |
| PBKDF2 | 可接受 | 否 | NIST批准,对GPU较弱 |
| SHA-256/MD5 | 绝不使用 | 否 | 非密码哈希算法 |

NIST 800-63B: 优先考虑长度(12+字符)而非复杂度规则。对照已泄露密码库进行检查。除非怀疑被入侵,否则不强制定期轮换。



多因素认证


因素安全性备注
TOTP(认证器应用)支持离线,Google Authenticator / Authy
WebAuthn/通行密钥
最高 | 抗钓鱼,硬件支持 |
| 短信OTP | 中等 | 易受SIM卡交换攻击 — 高安全场景避免使用 |
| 硬件密钥(FIDO2) | 最高 | YubiKey — 管理员账户最佳选择 |
| 备用码 | 低(备用方案) | 一次性使用,生成10个,存储哈希值 |


安全头


头字段
Strict-Transport-Securitymax-age=63072000; includeSubDomains; preload
Content-Security-Policy
限制脚本来源,禁止

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 auth-patterns-1776323653 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 auth-patterns-1776323653 技能

通过命令行安装

skillhub install auth-patterns-1776323653

下载

⬇ 下载 auth-patterns v1.0.0(免费)

文件大小: 5.85 KB | 发布时间: 2026-4-17 14:47

v1.0.0 最新 2026-4-17 14:47
auth-patterns 1.0.0

- Initial release covering core authentication and authorization patterns including JWT, OAuth 2.0, sessions, RBAC/ABAC, MFA, and vulnerability prevention.
- Provides practical recommendations for token handling, secure session management, and password storage.
- Adds concise tables comparing algorithms, storage options, OAuth flows, and MFA methods.
- Includes ready-to-use code snippets and best practices for both authentication and authorization.
- Highlights prevention strategies for common vulnerabilities such as CSRF, JWT attacks, and session fixation.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部