这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
完整架构
完整的用户认证与会话系统拆成四层:身份入口层、凭证与会话层、联邦身份层、风险与审计层。每一层只解决一类问题,层与层之间通过明确的接口衔接。
分层架构
┌─────────────────────────────────────────────────────────────────┐
│ 身份入口层 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 注册登录 │ │ 找回密码 │ │ SSO 登录 │ │ OAuth 登录│ │
│ └─────┬────┘ └─────┬────┘ └─────┬────┘ └─────┬────┘ │
│ └──────────────┴──────────────┴──────────────┘ │
└──────────────────────────────┼───────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────┐
│ 凭证与会话层 │
│ ┌──────────────────────────┐ ┌──────────────────────────┐ │
│ │ 认证服务 │ │ 会话服务 │ │
│ │ 验证凭证 / 检查状态 │ │ 创建 / 续期 / 撤销 │ │
│ └──────────────────────────┘ └──────────────────────────┘ │
│ ┌──────────────────────────┐ │
│ │ 令牌服务 │ │
│ │ Access / Refresh / 轮换 │ │
│ └──────────────────────────┘ │
└──────────────────────────────┼───────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────┐
│ 联邦身份层 │
│ ┌──────────────────────────┐ ┌──────────────────────────┐ │
│ │ IdP 认证中心 │ │ 授权服务(OAuth) │ │
│ │ 全局会话 / 身份断言 │ │ code / token / scope │ │
│ └──────────────────────────┘ └──────────────────────────┘ │
└──────────────────────────────┼───────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────┐
│ 风险与审计层 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ MFA 服务 │ │ 风控引擎 │ │ 设备管理 │ │ 审计日志 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────────────┘
最终登录链路
一次典型登录可以这样发生:
用户提交账号密码或选择第三方登录
↓
认证服务验证凭证,检查账号状态和登录风险
↓
风险较高时触发 MFA(TOTP / WebAuthn / 恢复码)
↓
登录成功:创建会话,签发 Access Token 和 Refresh Token
↓
客户端后续请求携带 Access Token
↓
Access Token 过期后,用 Refresh Token 换新令牌(可轮换、可撤销)
↓
修改密码 / 冻结账号 / 异常检测时,撤销相关会话
↓
所有登录、刷新、撤销和 MFA 操作写入审计日志
核心数据
| 数据 | 作用 |
|---|---|
| user_account | 用户账号、状态、密码哈希、认证方式 |
| session | 登录设备、过期时间、撤销状态、风险等级 |
| refresh_token | 长期凭证、轮换状态、绑定设备 |
| identity_binding | OAuth、SSO 等外部身份绑定 |
| mfa_factor | 用户启用的 TOTP、WebAuthn、恢复码 |
| auth_audit_log | 登录、失败、刷新、撤销、MFA、异常记录 |
密码、Refresh Token、MFA 备用码都属于高敏数据,必须加密或哈希存储,绝不能明文落库。
高可用与安全边界
- 认证中心是高价值目标:SSO 的 IdP、Token 签发服务一旦被攻破,等于所有系统的钥匙都被拿走。要独立部署、最小权限、单独监控。
- 失败要有兜底:MFA 服务不可用时,要有降级策略(例如临时提升风险等级而不是全部放行);令牌服务要支持密钥轮换。
- 撤销要快速生效:JWT 的撤销有天然延迟,需要用短有效期 + 黑名单/版本号来控制撤销窗口。
这套架构的关键在于:每一层都职责单一,信任可以建立、延续、提升、收回和追踪。
