认证与授权

安全的本质不是技术堆砌,而是对"信任"的工程化建模。认证与授权,就是在网络世界中构建信任关系的核心机制。


一、安全控制的第一性原理

在计算机安全领域,一切访问控制都可以被抽象为三个最基本的问题:

  1. **你是谁?** —— 认证(Authentication)
  2. **你能做什么?** —— 授权(Authorization)
  3. **你如何证明?** —— 凭证(Credential)

这三者构成了安全体系的最小闭环:

认证 → 生成凭证 → 授权决策

无论是:

本质上都在回答这三个问题,只是解决场景与边界不同。


二、认证的本质

2.1 认证的目标

认证的本质是:

在不可信的网络环境中,建立"主体身份"与"真实个体"的可信映射。

认证并不是单纯的"登录",而是一种信任建立过程。


2.2 认证的基本模式

所有认证方式,都可以归为三类:

类别本质
知识认证你知道什么(密码、密钥)
持有认证你拥有什么(Token、证书)
特征认证你是什么(指纹、人脸)

三、认证机制的演进路径

认证技术的发展,本质是为了解决三个核心矛盾:

  1. 用户体验
  2. 安全性
  3. 系统复杂度

3.1 本地认证:HTTP 认证

最早的认证发生在单系统场景:

HTTP 协议层提供了标准化的认证框架:

WWW-Authenticate → Authorization

流程模型:

客户端 → 服务端:请求资源服务端 → 客户端:需要认证客户端 → 服务端:携带凭证服务端 → 客户端:允许或拒绝

这代表的是一种最原始的挑战-响应模型


3.2 应用层认证:表单认证

由于 HTTP 认证灵活性不足,大部分系统转向了:

表单认证

其本质是:

这带来了更大的灵活性,但也意味着:

认证从"协议标准"变成了"工程问题"


3.3 跨系统认证:SSO

当系统从单体走向多系统,新的问题出现:

如何避免用户在多个系统中反复登录?

这催生了一个目标:

SSO —— 单点登录

SSO 的本质不是技术,而是一种目标:

一次认证,多处信任


SSO 的核心思想

统一认证中心 + 分散业务系统

3.4 SSO 的实现:CAS

CAS 是一种典型的 SSO 实现框架。

其核心机制是:

三个核心对象:

概念本质
TGT身份凭证
TGC客户端 Cookie
ST一次性票据

CAS 的本质:

用中心化的票据机制,实现跨系统身份传递


3.5 现代化认证:OIDC

当互联网规模进一步扩大,需要跨组织认证时:

于是出现:

OIDC = 认证标准化

OIDC 的本质:


四、授权的本质

如果说认证解决:

"你是谁"

那么授权解决:

"你能做什么"


4.1 授权的核心模型

授权本质上是一个三元关系:

主体(Subject)   ↓权限(Permission)   ↓资源(Resource)

4.2 授权模型的分类

DAC:自主访问控制

典型代表:Linux 文件权限

本质:

权限属于资源,而非系统


RBAC:基于角色的访问控制

核心思想:

用户 → 角色 → 权限 → 资源

RBAC 的本质创新:

用"角色"解耦用户与权限

这是目前企业系统中最常见的模型。


Rule-BAC / ABAC

基于规则或属性的访问控制:

本质:

从静态权限走向动态决策


MAC:强制访问控制

强调:

常见于高安全领域。


五、凭证:认证与授权的载体

认证和授权的结果,需要一种载体来传递:

这就是凭证(Credential)


5.1 Cookie-Session 模型

最经典的状态模型:

客户端 Cookie → 服务端 Session

优点:

缺点:


5.2 JWT:无状态凭证

JWT 的本质:

将状态"自包含化"

它解决的问题是:


JWT 的设计哲学

优点:

缺点:


六、OAuth2:授权的标准化

OAuth2 并不是认证协议,而是:

授权协议

它解决的问题是:

第三方应用如何安全地访问用户资源


6.1 OAuth2 的核心抽象

四个角色:

本质:

将"用户授权"工程化


6.2 四种授权模式

模式本质
授权码模式最安全
隐式模式纯前端场景
密码模式高信任场景
客户端模式无用户场景

6.3 OAuth2 的设计原则


七、保密工程:安全的基础

认证与授权的底层,是密码学。


7.1 客户端加密的意义

客户端加密的本质不是传输安全,而是:

防止服务端被动暴露明文


7.2 密码存储的工程原则


Bcrypt 的哲学

Bcrypt 的设计思想:

本质:

通过时间成本对抗算力进步


八、开放平台与边界信任

当系统从"内部系统"变为"开放平台",安全模型发生变化:


8.1 开放平台安全模型

核心要素:

本质:

构建受控的信任边界


九、服务间认证的本质

在微服务中,认证问题转化为:

服务与服务之间的信任问题

常见策略:

核心原则:

边界内信任,边界外验证


十、统一认知模型

最后,将所有内容抽象为一个统一框架:

安全体系├─ 认证│   ├─ 本地认证│   ├─ 联邦认证│   └─ SSO├─ 授权│   ├─ DAC│   ├─ RBAC│   ├─ ABAC│   └─ MAC├─ 凭证│   ├─ Session│   ├─ Token│   └─ JWT└─ 协议    ├─ OAuth2    └─ OIDC

十一、设计哲学总结

认证与授权的根本原则:

  1. 最小权限原则
  2. 信任边界原则
  3. 零信任思想
  4. 纵深防御
  5. 可审计性

关联内容(自动生成)