用途
auth-patterns 是一个关于认证与授权模式的知识技能,用于在实现登录/注册流程、JWT 令牌、会话管理、密码安全、OAuth 2.1、Passkeys/WebAuthn、多因素认证和基于角色的访问控制时提供参考。它定位为按需查阅的模式集合,而非独立运行的工具。
主要能力
资料列出的能力要点包括:
- 密码哈希:使用现代算法(如 Argon2id)安全哈希密码,配置适当的成本因子,迁移旧密码哈希。关键词包含 password、hashing、bcrypt、argon2、hash。
- JWT 令牌:生成和验证 JWT 访问令牌,实现正确的令牌过期,安全处理令牌刷新。
- OAuth 2.1 与 PKCE:实现带 PKCE 的 OAuth 2.1 流程,为 SPA 和移动应用提供安全授权,处理 OAuth 提供方集成。
- Passkeys/WebAuthn:实现无密码认证,配置 WebAuthn 注册与登录,支持跨设备 Passkeys。
- 会话管理:安全管理用户会话,实现登出时的会话失效,处理并发会话。
- 基于角色的访问控制:实现 RBAC,定义权限层级,在路由中检查授权。
使用方式
资料以“快速参考”形式给出代码片段,包括:使用 Argon2id 的 PasswordHasher 进行密码哈希与校验;用 HS256 生成带过期时间的 JWT 访问令牌;用 code_verifier 和 SHA-256 生成 PKCE 的 code_challenge;配置会话 Cookie 为 Secure、HTTPOnly、SameSite=Strict。
同时给出令牌过期与存储建议:访问令牌 15 分钟至 1 小时,仅存内存;刷新令牌 7 至 30 天,存 HTTPOnly Cookie。
反模式(禁止项)包括:绝不明文存储密码;绝不使用隐式 OAuth 授权(OAuth 2.1 中已弃用);绝不在登录接口省略限流;绝不暴露邮箱是否存在。对应正例为:始终使用 Argon2id 或 bcrypt;始终使用 PKCE;始终对认证端点限流(如每分钟 5 次);始终使用通用错误信息。
关键决策建议:密码哈希选 Argon2id 优先于 bcrypt;访问令牌过期 15 分钟至 1 小时;刷新令牌过期 7 至 30 天并轮换;会话 Cookie 使用 HTTPOnly、Secure、SameSite=Strict;限流每分钟 5 次尝试;MFA 优先级为 Passkeys 优于 TOTP 优于短信;OAuth 选 2.1 with PKCE(不用隐式)。
详细文档入口
资料附带以下资源:references/oauth-2.1-passkeys.md(OAuth 2.1、PKCE、Passkeys/WebAuthn)、examples/auth-implementations.md(完整实现示例)、checklists/auth-checklist.md(安全检查清单)、scripts/auth-middleware-template.py(Flask/FastAPI 中间件模板)。
适用场景
适用于在开发认证与授权功能时作为模式参照,例如实现登录注册、令牌签发与刷新、第三方登录、无密码登录、会话安全加固以及权限校验。
限制
资料未提供该技能的安装命令、运行方式、支持平台、收费或价格信息,暂未提供。具体运行环境与依赖也暂未提供。使用时应结合项目实际情况验证代码与配置。