OAuth 2.0
什么是 OAuth 2.0
OAuth 2.0(Open Authorization)是一种 industry-standard 的授权协议。它定义了第三方应用在不获取用户密码的前提下,安全地访问用户资源的机制。
核心思想
当第三方应用想要访问用户在某个系统中的数据时:
- 用户明确授权第三方应用访问特定资源
- 系统颁发一个短期有效的访问令牌(Access Token)
- 第三方应用使用令牌代替密码访问资源
- 令牌可随时被用户撤销,无需修改密码

为什么需要 OAuth 2.0
在没有 OAuth 之前,第三方应用访问用户数据通常需要用户提供账号密码:
| 方式 | 风险 |
|---|---|
| 共享密码 | 第三方可滥用权限,用户无法细粒度控制 |
| 无法撤销 | 即使不再使用某应用,也只能改密码 |
| 无法追踪 | 无法知道哪些应用正在访问自己的数据 |
OAuth 2.0 的优势
- 安全:客户端不接触用户密码,降低泄露风险
- 可控:用户可授权特定权限,随时撤销
- 可追溯:服务器可集中维护审计日志
- 灵活:支持不同程度的信任级别,适应多种场景
OAuth 2.0 与身份认证
重要区分:OAuth 2.0 是授权协议,不是身份认证协议。它解决的是"你能做什么",而不是"你是谁"。
如果需要同时完成身份认证,应使用基于 OAuth 2.0 构建的 OIDC(OpenID Connect)协议。
典型应用场景
| 场景 | 说明 |
|---|---|
| 第三方登录 | 使用微信/支付宝账号登录其他应用 |
| API 授权 | 授权第三方应用访问用户的云盘、日历等数据 |
| ** delegated 访问** | 用户授权代理服务代替自己执行操作 |