认证系统概述

认证系统的第一版通常很简单:用户输入账号密码,服务端查数据库,密码正确就登录成功。可一旦业务增长,问题会很快出现:

  • 用户在多台设备上登录,如何查看和退出某一台?
  • 密码泄露后,如何强制所有会话失效?
  • 移动端、Web 端、后台系统是否使用同一套登录态?
  • 多个业务系统之间如何避免重复登录?
  • 高风险操作是否需要二次验证?

这些问题说明,认证不是一个接口,而是一套身份系统。

认证、授权和会话

先区分三个概念:

概念回答的问题示例
认证你是谁账号密码、短信验证码、MFA
授权你能做什么是否能访问订单、是否是管理员
会话系统如何记住你已登录Cookie、Session、Token

很多事故来自边界混淆。登录成功不代表拥有所有权限,Token 有效也不代表当前风险低。

认证系统目标

生产级认证系统至少要满足四个目标:

  1. 安全:密码不能明文存储,Token 不能随意伪造,会话可以撤销。
  2. 体验:用户不应频繁重复登录,正常操作不应被过度打扰。
  3. 可控:管理员能冻结账号、强制下线、追踪登录历史。
  4. 可扩展:支持 Web、移动端、第三方登录、SSO 和 MFA。

这些目标天然存在取舍。会话时间越长,体验越好,但风险窗口越大;验证越严格,安全越高,但转化率可能下降。

课程主线

我们会从账号密码登录开始,先把身份验证做正确;然后设计 Token 和会话,让登录态能跨请求工作;接着扩展到多个系统的 SSO 和第三方 OAuth;最后补齐 MFA、审计和完整架构。

认证系统的核心问题始终是:如何在可接受的用户体验下,可靠地证明用户身份,并在风险出现时及时收回信任。