跳到主要内容

身份认证与授权:现代架构的基石

认证与授权是系统安全的两大支柱。从简单的 Session-Cookie 时代,到现代分布式环境下的 OAuth 2.1 与无感认证(Passkeys),身份管理技术正经历从共享密钥向非对称加密的演进。

核心模型:AuthN vs AuthZ

在系统设计层面,应明确区分以下概念:

  • 认证 (AuthN):确认用户身份。例如通过密码、生物识别或硬件令牌(YubiKey)证明账号持有权。
  • 授权 (AuthZ):确认用户权限。例如系统在确认身份后,根据权限定义允许操作特定资源。

认证的三大维度

  1. 所知 (Something you know):传统密码、PIN 码、安全问题答案。
  2. 所有 (Something you have):手机 TOTP 验证码、硬件 U2F 令牌、Passkeys。
  3. 所是 (Something you are):指纹、面容、虹膜等生物识别特征。

有效的多因素认证 (MFA) 必须组合使用不同维度的因素。例如密码(所知)+ 手机验证码(所有)构成有效的双因素认证,而密码 + 安全问题(都是所知)则不是有效的 MFA。

常见的授权架构

  • RBAC (基于角色的访问控制):通过角色中转权限分配,适合大多数应用。用户 → 角色 → 权限。
  • ABAC (基于属性的访问控制):根据用户属性和环境因素动态计算权限,是零信任架构的核心。例如:用户部门=研发 AND 时间=工作时间 AND IP=内网。
  • ACL (访问控制列表):直接在资源上标记权限归属,适合简单场景。
  • ReBAC (基于关系的访问控制):通过实体间的关系判断权限,如社交网络中的"好友可见"。

认证 vs 授权:对比表

维度认证 (AuthN)授权 (AuthZ)
目的确认"你是谁"确认"你能做什么"
时机先发生后发生(认证成功后)
数据身份标识、凭据权限、角色、策略
失败结果401 Unauthorized403 Forbidden
示例输入密码、刷脸检查是否有管理员权限

身份认证演进

随着架构从单体转向微服务,认证机制完成了从有状态到可验证无状态的转化:

各阶段详解

第一阶段:Session-Cookie(传统单体应用)

核心思想:服务端存储会话状态,客户端通过 Cookie 携带会话标识。

优势

  • 实现简单,各框架都有成熟支持
  • 服务端可实时控制会话(强制下线、权限变更立即生效)
  • 安全性高(敏感数据不暴露给客户端)

劣势

  • 内存开销随用户数增长
  • 分布式环境需要会话同步(Session Sticky 或 Redis 共享)
  • Cookie 受同源策略限制,跨域配置复杂

第二阶段:JWT(分布式微服务)

核心思想:将用户信息编码到令牌中,服务端无需存储会话,通过验证签名确认身份。

优势

  • 无状态,天然支持水平扩展
  • 跨域友好,适合前后端分离架构
  • 移动端友好,无需处理 Cookie

劣势

  • 令牌一旦签发,在过期前无法主动失效(需配合黑名单)
  • 载荷大小受限,不适合存储大量信息
  • 敏感信息不能放入载荷(仅 Base64 编码,非加密)

第三阶段:OAuth 2.1 / OIDC(生态互联)

核心思想:标准化授权协议,支持第三方应用安全获取用户资源,OIDC 在此基础上增加身份层。

优势

  • 行业标准,生态成熟
  • 支持多种客户端类型(Web、移动端、桌面)
  • 废弃不安全模式,强制 PKCE

劣势

  • 协议复杂,学习成本高
  • 依赖第三方服务(如使用社交登录)
  • 需要处理令牌刷新和撤销

第四阶段:Passkeys / WebAuthn(无密码时代)

核心思想:使用公钥密码学替代密码,私钥存储在用户设备,公钥存储在服务端。

优势

  • 彻底解决密码泄露问题
  • 防钓鱼(私钥绑定域名)
  • 用户体验极佳(指纹/面容一键登录)

劣势

  • 设备依赖性强
  • 跨设备同步依赖云服务
  • 需要备用恢复机制

学习导航

本章涵盖工业界主流的身份管理方案,按照学习难度和依赖关系排列:

基础认证机制

  1. Session-Cookie:原理与攻防 —— 理解会话劫持与分布式同步,是理解认证基础的关键。
  2. JWT 实战与陷阱 —— 掌握无状态认证及常见安全漏洞防御,现代 API 认证的主流选择。

第三方认证

  1. OAuth 2.1 与 OIDC —— 学习安全集成第三方登录,理解授权与认证的区别。
  2. OpenID Connect —— 基于 OAuth 2.0 的身份层,实现标准化用户身份识别。

单点登录

  1. 单点登录 (SSO) —— 企业级身份管理的核心,统一用户认证体验,支持 OIDC 和 SAML 两种主流协议。

高级安全认证

  1. 多因素认证 (MFA) —— TOTP、短信验证码、备份码的完整实现,构建纵深防御体系。
  2. Passkeys 与 WebAuthn —— 无密码认证的未来,使用公钥密码学实现更安全的身份验证。

权限控制

  1. 权限控制:RBAC 与 ABAC —— 掌握基于角色和基于属性的访问控制模型,构建灵活的授权体系。

速查参考

  1. 认证与授权速查表 —— 常用协议、代码片段及安全配置的直观参考。

为什么学习本教程?

我们从 RFC 标准出发,剖析协议背后的数据交换流程。通过本章学习,不仅能掌握 SDK 调用,还能在复杂场景(如跨端会话、零信任接入)下设计具备抗攻击能力的身份体系。

[!TIP] 安全是动态演进的过程。本章提到的 OAuth 2.1 和 Passkeys 实践正逐渐成为主流,建议根据业务需求及时调整安全策略。