该技能聚焦认证(AuthN)与授权(AuthZ)的工程实现模式,帮助开发者构建安全、可扩展的访问控制系统。
用途与适用场景 适用于实现用户认证系统、保护 REST 或 GraphQL API、添加 OAuth2 社交登录、实现基于角色的访问控制(RBAC)、设计会话管理、迁移认证系统、调试认证问题,以及实现 SSO 或多租户。
主要能力
- 认证策略:会话式(服务端保存会话状态,Cookie 携带 Session ID)与令牌式 JWT(无状态、自包含、可水平扩展、可存声明),以及 OAuth2/OpenID Connect 委托认证(Google、GitHub 等社交登录与企业 SSO)。
- JWT:用 jsonwebtoken 生成短时 accessToken(15m)与长时 refreshToken(7d),校验并处理 TokenExpiredError/JsonWebTokenError,编写 authenticate 中间件从 Authorization: Bearer 解析令牌并挂载 req.user。刷新令牌流程将 refreshToken 哈希后入库,校验数据库记录与有效期,支持注销单设备(revokeRefreshToken)与注销全部设备(revokeAllUserTokens)。
- 会话认证:express-session 配合 connect-redis 存储,Cookie 设置 secure(生产环境 HTTPS)、httpOnly、maxAge、sameSite: "strict" 防 CSRF;提供 requireAuth 中间件与登录/登出路由(session.destroy 并清除 connect.sid)。
- 授权:角色层级(user/moderator/admin)与 requireRole 中间件;基于权限的 rolePermissions 映射与 requirePermission 中间件(要求全部权限);资源所有权校验 requireOwnership,管理员可越权访问。
- 安全实践:使用 bcrypt(saltRounds 12)哈希与校验密码,zod 校验密码强度(至少 12 位、含大小写、数字与特殊字符);使用 express-rate-limit 配合 rate-limit-redis 对登录(15 分钟 5 次)与 API(每分钟 100 次)限流;HTTPS、短时访问令牌、安全 Cookie、输入校验、CSRF 防护、定期轮换密钥、记录安全事件、启用 MFA。并列出了常见陷阱,如 localStorage 存 JWT 易受 XSS、无令牌过期、仅客户端校验、不安全的密码重置、无限流、信任客户端数据等。
使用方式 资料以 TypeScript/Express 代码示例给出模式,含依赖(jsonwebtoken、express、express-session、connect-redis、redis、passport、passport-google-oauth20、passport-github2、bcrypt、zod、express-rate-limit、rate-limit-redis)与路由/中间件用法,并附带参考文件:references/jwt-best-practices.md、references/oauth2-flows.md、references/session-security.md、assets/auth-security-checklist.md、assets/password-policy-template.md、scripts/token-validator.ts。
限制 资料未提供该技能的安装命令、收费与价格、支持平台、性能数据及具体官方文档链接;上述内容暂未提供。实施时需自行确认依赖版本与运行环境。