本资料是一份身份认证与授权的实现参考,面向 Web、移动端和 API 应用,说明如何在不同场景下选择与落地认证方案。
一、用途 作为开发者遇到 JWT 令牌、OAuth 2.0 流程、会话管理、API Key 等问题时可查阅的实现指南,按主题分节给出结构说明、流程步骤、示例代码与注意事项。
二、主要能力
- JWT(JSON Web Tokens):说明由 header.payload.signature 三段 Base64URL 组成的结构、各段字段、对称(HS256)与非对称(RS256、ES256)签名方式及 JWKS 发布;给出访问令牌+刷新令牌流程,以及 Node.js 生成与校验示例;列出不要放敏感信息、须校验 exp/iss/aud、须固定预期算法等陷阱。
- OAuth 2.0:覆盖授权码流程、带 PKCE 的授权码流程(适用于无法保存密钥的公共客户端)、客户端凭证流程(机器对机器)、设备授权流程(输入受限设备),并给出 Python 请求示例。
- 会话认证:说明服务端创建会话、下发会话 ID Cookie 的机制,Cookie 的 HttpOnly/Secure/SameSite 配置,内存、Redis、数据库三种会话存储的优缺点对比,以及滑动过期与绝对过期结合的策略。
- API Key:生成方式(CSPRNG)、前缀标识、哈希存储、轮换与重叠期,适用于服务端对服务端调用与用量追踪,不适合作为面向用户应用的唯一认证方式。
- Basic 认证:说明 Authorization: Basic base64(username:password) 的可接受场景(受 VPN 与 TLS 保护的内网服务、开发环境、Webhook 共享密钥)与不可接受场景。
- 多因素认证:TOTP 的共享密钥、30 秒 6 位码、时钟偏移容忍与常用库;WebAuthn/Passkeys 的防钓鱼原理、注册与认证步骤、跨设备同步;以及备份码、加密存储、登录时不暴露 MFA 状态等指引。
- 单点登录:SAML 2.0 的 XML 断言与需校验项;OpenID Connect 在 OAuth 2.0 之上的身份层、id_token、发现端点与校验项;并给出两者的选择建议。
- 密码哈希:bcrypt、Argon2id、scrypt 的说明与推荐参数,明确禁止 MD5、SHA-1、单独 SHA-256 和无盐哈希,附 Python 代码。
- 浏览器令牌存储:httpOnly cookie、localStorage、sessionStorage、内存四种方式的 XSS/CSRF 风险对比与推荐组合(刷新令牌放 httpOnly Secure SameSite Cookie、访问令牌放内存、页面加载时静默刷新)。
- CORS 与认证头:指定具体来源而非通配、开启凭证、允许 Authorization 头、来源放服务端配置。
- 认证端点限流:对 /login、/token、/register、/password-reset 严格限流,按 IP 与账号双维度限制,返回 429 与 Retry-After,认证限流与通用 API 限流分开。
- 常见漏洞:令牌泄露、会话固定、CSRF、撞库、JWT 算法混淆、OAuth 开放重定向,各给出成因与缓解措施。
- 中间件模式:给出 Express(requireAuth、requireRole)、FastAPI(HTTPBearer 依赖)、Next.js(middleware + jose 校验)三段示例。
三、使用方式 资料以技能形式提供,供开发者在构建认证与授权功能时按主题查阅,并可直接参考其中示例代码接入具体框架。安装命令暂未提供。
四、适用场景 需要为 Web、移动端或 API 设计登录、令牌、单点登录、MFA、会话与访问控制时;需要排查认证相关漏洞或加固认证端点时。
五、限制 资料为模式与规范参考,未提供收费、价格、平台支持范围或效果数据;示例代码基于 Node.js、Python、Next.js,其他语言与框架未提供示例。