OAuth #

什么是 OAuth? #

OAuth(Open Authorization)是一个开放标准,允许用户授权第三方应用访问其在其他服务提供商存储的信息,而无需将用户名和密码提供给第三方应用。

核心定位 #

text
┌─────────────────────────────────────────────────────────────┐
│                         OAuth                                │
├─────────────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │  安全授权    │  │  无需密码    │  │  有限权限   │         │
│  └─────────────┘  └─────────────┘  └─────────────┘         │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │  标准协议    │  │  多种流程    │  │  广泛支持   │         │
│  └─────────────┘  └─────────────┘  └─────────────┘         │
└─────────────────────────────────────────────────────────────┘

为什么使用 OAuth? #

传统方式的痛点 #

text
传统方式问题:

❌ 密码共享
   用户需要提供密码给第三方
   第三方获得完全访问权限
   安全风险极高

❌ 无法细粒度控制
   无法限制访问范围
   无法限制访问时间
   无法撤销特定授权

❌ 密码泄露风险
   第三方存储密码
   密码可能被泄露
   影响所有关联服务

OAuth 的解决方案 #

text
OAuth 解决方案:

✅ 无需密码
   用户在服务提供商处授权
   第三方不接触用户密码

✅ 细粒度权限
   可以限制访问范围(scope)
   可以设置过期时间
   可以随时撤销授权

✅ 安全令牌
   使用 Token 替代密码
   Token 可以随时失效
   支持刷新机制

OAuth 2.0 授权流程 #

授权码模式 #

text
┌─────────┐                ┌─────────┐                ┌─────────┐
│  用户   │                │ 第三方  │                │ 服务商  │
└────┬────┘                └────┬────┘                └────┬────┘
     │                          │                          │
     │ 1. 点击登录              │                          │
     │─────────────────────────>│                          │
     │                          │                          │
     │ 2. 重定向到授权页面      │                          │
     │<─────────────────────────│                          │
     │                          │                          │
     │ 3. 用户同意授权          │                          │
     │─────────────────────────────────────────────────────>│
     │                          │                          │
     │ 4. 返回授权码            │                          │
     │<─────────────────────────────────────────────────────│
     │                          │                          │
     │ 5. 传递授权码            │                          │
     │─────────────────────────>│                          │
     │                          │                          │
     │                          │ 6. 用授权码换取 Token    │
     │                          │─────────────────────────>│
     │                          │                          │
     │                          │ 7. 返回 Access Token     │
     │                          │<─────────────────────────│
     │                          │                          │

文档结构 #

text
OAuth 文档
├── 基础入门
│   ├── OAuth 简介
│   └── 核心概念
│
├── 授权模式
│   ├── 授权码模式
│   └── PKCE 扩展
│
└── 与 JWT 结合
    └── JWT 与 OAuth

OAuth 2.0 授权类型 #

授权类型 适用场景 安全性
授权码模式 服务端应用
PKCE 移动端/SPA
客户端凭证 机器对机器
设备码 设备无浏览器

学习路径 #

text
入门阶段
├── OAuth 简介
└── 核心概念

进阶阶段
├── 授权码模式
├── PKCE 扩展
└── 其他授权类型

高级阶段
├── JWT 与 OAuth
├── 安全最佳实践
└── OpenID Connect

下一步 #

现在你已经了解了 OAuth 的基本概念,接下来学习 OAuth 简介,深入了解 OAuth 的详细原理!

最后更新:2026-03-29