身份认证与授权:现代架构的基石
认证与授权是系统安全的两大支柱。从简单的 Session-Cookie 时代,到现代分布式环境下的 OAuth 2.1 与无感认证(Passkeys),身份管理技术正经历从共享密钥向非对称加密的演进。
核心模型:AuthN vs AuthZ
在系统设计层面,应明确区分以下概念:
- 认证 (AuthN):确认用户身份。例如通过密码、生物识别或硬件令牌(YubiKey)证明账号持有权。
- 授权 (AuthZ):确认用户权限。例如系统在确认身份后,根据权限定义允许操作特定资源。
认证的三大维度
- 所知 (Something you know):传统密码、PIN 码、安全问题答案。
- 所有 (Something you have):手机 TOTP 验证码、硬件 U2F 令牌、Passkeys。
- 所是 (Something you are):指纹、面容、虹膜等生物识别特征。
有效的多因素认证 (MFA) 必须组合使用不同维度的因素。例如密码(所知)+ 手机验证码(所有)构成有效的双因素认证,而密码 + 安全问题(都是所知)则不是有效的 MFA。
常见的授权架构
- RBAC (基于角色的访问控制):通过角色中转权限分配,适合大多数应用。用户 → 角色 → 权限。
- ABAC (基于属性的访问控制):根据用户属性和环境因素动态计算权限,是零信任架构的核心。例如:用户部门=研发 AND 时间=工作时间 AND IP=内网。
- ACL (访问控制列表):直接在资源上标记权限归属,适合简单场景。
- ReBAC (基于关系的访问控制):通过实体间的关系判断权限,如社交网络中的"好友可见"。
认证 vs 授权:对比表
| 维度 | 认证 (AuthN) | 授权 (AuthZ) |
|---|---|---|
| 目的 | 确认"你是谁" | 确认"你能做什么" |
| 时机 | 先发生 | 后发生(认证成功后) |
| 数据 | 身份标识、凭据 | 权限、角色、策略 |
| 失败结果 | 401 Unauthorized | 403 Forbidden |
| 示例 | 输入密码、刷脸 | 检查是否有管理员权限 |
身份认证演进
随着架构从单体转向微服务,认证机制完成了从有状态到可验证无状态的转化:
各阶段详解
第一阶段:Session-Cookie(传统单体应用)
核心思想:服务端存储会话状态,客户端通过 Cookie 携带会话标识。
优势:
- 实现简单,各框架都有成熟支持
- 服务端可实时控制会话(强制下线、权限变更立即生效)
- 安全性高(敏感数据不暴露给客户端)
劣势:
- 内存开销随用户数增长
- 分布式环境需要会话同步(Session Sticky 或 Redis 共享)
- Cookie 受同源策略限制,跨域配置复杂
第二阶段:JWT(分布式微服务)
核心思想:将用户信息编码到令牌中,服务端无需存储会话,通过验证签名确认身份。
优势:
- 无状态,天然支持水平扩展
- 跨域友好,适合前后端分离架构
- 移动端友好,无需处理 Cookie
劣势:
- 令牌一旦签发,在过期前无法主动失效(需配合黑名单)
- 载荷大小受限,不适合存储大量信息
- 敏感信息不能放入载荷(仅 Base64 编码,非加密)
第三阶段:OAuth 2.1 / OIDC(生态互联)
核心思想:标准化授权协议,支持第三方应用安全获取用户资源,OIDC 在此基础上增加身份层。
优势:
- 行业标准,生态成熟
- 支持多种客户端类型(Web、移动端、桌面)
- 废弃不安全模式,强制 PKCE
劣势:
- 协议复杂,学习成本高
- 依赖第三方服务(如使用社交登录)
- 需要处理令牌刷新和撤销
第四阶段:Passkeys / WebAuthn(无密码时代)
核心思想:使用公钥密码学替代密码,私钥存储在用户设备,公钥存储在服务端。
优势:
- 彻底解决密码泄露问题
- 防钓鱼(私钥绑定域名)
- 用户体验极佳(指纹/面容一键登录)
劣势:
- 设备依赖性强
- 跨设备同步依赖云服务
- 需要备用恢复机制
学习导航
本章涵盖工业界主流的身份管理方案,按照学习难度和依赖关系排列:
基础认证机制
- Session-Cookie:原理与攻防 —— 理解会话劫持与分布式同步,是理解认证基础的关键。
- JWT 实战与陷阱 —— 掌握无状态认证及常见安全漏洞防御,现代 API 认证的主流选择。
第三方认证
- OAuth 2.1 与 OIDC —— 学习安全集成第三方登录,理解授权与认证的区别。
- OpenID Connect —— 基于 OAuth 2.0 的身份层,实现标准化用户身份识别。
单点登录
- 单点登录 (SSO) —— 企业级身份管理的核心,统一用户认证体验,支持 OIDC 和 SAML 两种主流协议。
高级安全认证
- 多因素认证 (MFA) —— TOTP、短信验证码、备份码的完整实现,构建纵深防御体系。
- Passkeys 与 WebAuthn —— 无密码认证的未来,使用公钥密码学实现更安全的身份验证。
权限控制
- 权限控制:RBAC 与 ABAC —— 掌握基于角色和基于属性的访问控制模型,构建灵活的授权体系。
速查参考
- 认证与授权速查表 —— 常用协议、代码片段及安全配置的直观参考。
为什么学习本教程?
我们从 RFC 标准出发,剖析协议背后的数据交换流程。通过本章学习,不仅能掌握 SDK 调用,还能在复杂场景(如跨端会话、零信任接入)下设计具备抗攻击能力的身份体系。
[!TIP] 安全是动态演进的过程。本章提到的 OAuth 2.1 和 Passkeys 实践正逐渐成为主流,建议根据业务需求及时调整安全策略。