## Cookie

| 维度         | 说明                                                         |
| :----------- | :----------------------------------------------------------- |
| **本质**     | 存储在浏览器端的一小段文本数据（通常 4KB 以内）              |
| **核心机制** | 浏览器在每次 HTTP 请求中**自动携带**符合域名/路径规则的 Cookie |
| **关键属性** | `HttpOnly`（防 JS 读取）、`Secure`（仅 HTTPS）、`SameSite`（防 CSRF）、`Expires/Max-Age` |
| **定位**     | **传输载体，而非认证方案本身**——它负责把令牌（Session ID 或 Token）在客户端和服务器之间来回搬运 |

**优点**：

- 简单成熟，几乎所有 Web 框架默认集成
- 服务端可随时销毁会话，控制力强
- 敏感信息存在服务端，不暴露给客户端

**缺点**：

- 扩展性受限——多服务器需共享 Session（引入 Redis 等外部存储）
- 依赖 Cookie，纯移动端/非浏览器环境不友好
- 容易受到 CSRF 攻击（需额外防护）

## Session

| 维度         | 说明                                                         |
| :----------- | :----------------------------------------------------------- |
| **本质**     | 服务器端维护的用户会话数据（通常以 Map 结构存在内存、Redis 或数据库中） |
| **认证流程** | 用户登录 → 服务器创建 Session → 将 Session ID 通过 `Set-Cookie` 返回 → 浏览器后续请求自动携带该 Cookie → 服务器通过 Session ID 查找会话数据验证身份 |
| **核心特点** | **有状态**：服务器持有用户上下文，可随时主动吊销             |
| **定位**     | 经典的**服务端主导**的认证方式，适合传统 Web 应用和前后端未彻底分离的场景 |

**优点**：

- 简单成熟，几乎所有 Web 框架默认集成
- 服务端可随时销毁会话，控制力强
- 敏感信息存在服务端，不暴露给客户端

**缺点**：

- 扩展性受限——多服务器需共享 Session（引入 Redis 等外部存储）
- 依赖 Cookie，纯移动端/非浏览器环境不友好
- 容易受到 CSRF 攻击（需额外防护）

## JWT

| **本质**     | 一段经过签名（或加密）的 JSON 数据，由 Header、Payload、Signature 三部分组成，以 Base64URL 编码 |
| ------------ | ------------------------------------------------------------ |
| **认证流程** | 用户登录 → 服务器验证凭据并签发 JWT → 客户端存储 Token → 后续请求在 `Authorization: Bearer <token>` 头中携带 → 服务器**仅验证签名和有效期**，无需查库 |
| **核心特点** | **无状态**：Token 自身包含用户身份信息，服务器不需要维护会话 |
| **定位**     | 现代**前后端分离架构**和**多端（Web/iOS/Android）统一接入**的事实标准 |

**优点**：

- 天然无状态，服务端可随意水平扩展
- 不依赖 Cookie，可用于移动端、小程序等非浏览器环境
- 跨域友好（CORS 场景下比 Cookie 更灵活）
- Payload 可携带少量业务数据，减少数据库查询

**缺点**：

- Token 一旦签发，在过期前无法主动撤销（需引入黑名单/版本号等机制）
- Payload 仅 Base64 编码（非加密），敏感信息绝对不能放入
- Token 体积比 Session ID 大，每次请求都传输有一定带宽开销

## SSO

| 维度         | 说明                                                         |
| :----------- | :----------------------------------------------------------- |
| **本质**     | 一种架构模式，通过**统一的认证中心（IdP）**，让用户在多个独立系统间共享登录状态 |
| **认证流程** | 用户访问应用A → 重定向到 SSO 认证中心 → 登录并获取令牌 → 带回令牌访问应用A → 再访问应用B时，认证中心识别已登录状态，直接放行 |
| **常见实现** | CAS、SAML、OAuth 2.0 + OpenID Connect                        |
| **定位**     | **企业级、多系统生态**的统一身份认证方案                     |

**优点**：

- 用户体验极佳：一次登录，访问所有关联系统
- 集中管理：统一账号体系、权限策略、安全审计
- 安全性提升：减少密码泄露面，可配合多因素认证（MFA）

**缺点**：

- **单点故障风险**：认证中心一旦宕机，所有系统登录受影响
- 实现复杂：涉及协议配置、令牌传递、跨域重定向等
- 对认证中心的高可用要求极高

## OAuth 2.0

| 维度         | 说明                                                         |
| :----------- | :----------------------------------------------------------- |
| **本质**     | 一种**授权框架**（而非纯粹的认证协议），允许用户授权第三方应用在**不暴露自己密码**的情况下访问受保护资源 |
| **核心角色** | 资源拥有者（用户）、客户端（第三方应用）、授权服务器、资源服务器 |
| **核心流程** | 用户授权 → 第三方获取授权码 → 换取 Access Token → 持 Token 访问资源 |
| **定位**     | **第三方接入**和**开放平台**的标准授权方案（微信登录、Google 登录等） |