SuperAPI AI 工具集

authentication-patterns

安全与审计

查看项目

更新于 10-16 02:27

技能介绍

用途:在项目中实现认证、审查现有认证流程的安全问题、选择认证提供商或在认证策略间迁移时使用;任何认证相关改动上线前可对照其安全清单检查。

主要能力:对比四种认证方式。Session 由服务端在 DB/Redis 存会话、客户端持会话 ID Cookie,适合传统服务端渲染应用、需要即时吊销,但需服务端存储、横向扩展较难;JWT 无状态,适合 API 优先、微服务、移动端,但难以吊销、令牌体积随声明增长;OAuth 2.0/OIDC 委托外部提供商,适合社交登录、企业 SSO;Passkeys/WebAuthn 用密钥对免密码,适合高安全场景,但旧浏览器支持有限。

JWT 要点:访问令牌短期有效(15 分钟或更短),刷新令牌 7-30 天并轮换、单次使用,需服务端吊销黑名单;令牌存于 httpOnly、Secure、SameSite=Lax Cookie,禁止使用 localStorage 或 sessionStorage;负载只放必要声明(sub、iat、exp、role);分布式系统宜用 RS256/ES256,单服务可用 HS256;每次请求校验 iss、aud、exp。文中附有 NextAuth 的 app/api/auth/[...nextauth]/route.ts 配置示例,以及 bcrypt(SALT_ROUNDS=12)和 argon2id 的哈希与校验代码。

提供商:NextAuth/Auth.js 为开源库,适合需要自托管与数据库会话控制的 Next.js 应用;Clerk 为托管服务,提供预置 UI 与用户管理;Supabase Auth 适合已用 Supabase 数据库/存储的应用,可与行级安全策略集成;Lucia 为最小化、类型安全的会话库。

安全清单:登录限流每 IP 每分钟 5-10 次;防 CSRF;密码用 bcrypt(cost 12+)或 argon2id,禁用 MD5、SHA-1、裸 SHA-256;仅 HTTPS 且 Cookie 带 Secure;校验输入(密码长度 8-128);登录与注册响应一致以防账户枚举;注销时服务端失效会话;支持 TOTP 或 WebAuthn 二次验证;重置令牌限时 1 小时且单次使用;记录认证事件日志。

限制:资料未提供各托管服务的具体价格数值与完整文档,仅笼统提及免费层后按 MAU 计费;未提供各框架的完整集成步骤。