这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
认证系统概述
认证系统的第一版通常很简单:用户输入账号密码,服务端查数据库,密码正确就登录成功。可一旦业务增长,问题会很快出现:
- 用户在多台设备上登录,如何查看和退出某一台?
- 密码泄露后,如何强制所有会话失效?
- 移动端、Web 端、后台系统是否使用同一套登录态?
- 多个业务系统之间如何避免重复登录?
- 高风险操作是否需要二次验证?
这些问题说明,认证不是一个接口,而是一套身份系统。
认证、授权和会话
先区分三个概念:
| 概念 | 回答的问题 | 示例 |
|---|---|---|
| 认证 | 你是谁 | 账号密码、短信验证码、MFA |
| 授权 | 你能做什么 | 是否能访问订单、是否是管理员 |
| 会话 | 系统如何记住你已登录 | Cookie、Session、Token |
很多事故来自边界混淆。登录成功不代表拥有所有权限,Token 有效也不代表当前风险低。
认证系统目标
生产级认证系统至少要满足四个目标:
- 安全:密码不能明文存储,Token 不能随意伪造,会话可以撤销。
- 体验:用户不应频繁重复登录,正常操作不应被过度打扰。
- 可控:管理员能冻结账号、强制下线、追踪登录历史。
- 可扩展:支持 Web、移动端、第三方登录、SSO 和 MFA。
这些目标天然存在取舍。会话时间越长,体验越好,但风险窗口越大;验证越严格,安全越高,但转化率可能下降。
课程主线
我们会从账号密码登录开始,先把身份验证做正确;然后设计 Token 和会话,让登录态能跨请求工作;接着扩展到多个系统的 SSO 和第三方 OAuth;最后补齐 MFA、审计和完整架构。
认证系统的核心问题始终是:如何在可接受的用户体验下,可靠地证明用户身份,并在风险出现时及时收回信任。