OAuth 2.0介绍

半兽人 发表于: 2025-07-28   最后更新时间: 2025-07-28 16:25:06  
{{totalSubscript}} 订阅, 63 游览

OAuth 2.0 是一种授权协议(authorization framework),用于让第三方应用在不获取用户密码的前提下,访问用户在其他服务上的资源(如用户的谷歌照片、GitHub 仓库、微博信息等)。

它解决的问题简单说就是:

“我想授权某个应用访问我的某些账户信息,但不想给它我的密码。”

简化理解:OAuth2 像“临时访问证”

比如你去银行办业务,需要朋友帮你代办,但你又不想把你的银行卡密码告诉他。

OAuth2 就像是银行提供的一张“代办授权卡”:

  • 有效期有限(access token 有时效)
  • 权限受限(只允许查余额、不能取钱)
  • 可随时吊销(refresh token 过期或用户主动取消授权)

OAuth2 的核心角色

OAuth2 定义了四个关键角色:

角色 说明
资源拥有者(Resource Owner) 通常是用户本人
客户端(Client) 第三方应用,如知乎、印象笔记等
授权服务器(Authorization Server) 授权逻辑的提供者,比如 Google、GitHub
资源服务器(Resource Server) 存放资源的地方,比如 Google Drive

OAuth2 授权流程(授权码模式,最常见)

最标准流程如下:

  1. 用户打开第三方应用 → 点“用 GitHub 登录”
  2. 第三方应用重定向 到 GitHub 登录授权页面
  3. 用户在 GitHub 登录并授权
  4. GitHub 返回授权码(authorization code)给第三方应用
  5. 第三方应用 用授权码换取 token
  6. 获取到 access token 后,第三方就能用它访问你的 GitHub 数据

你可以把 access token 看作是“访问资源的通行证”。

OAuth2 有哪些授权方式?

OAuth2 定义了 4 种授权方式,最常见是前两种:

授权方式 使用场景
授权码模式(Authorization Code) 最安全,适用于 Web 应用
简化模式(Implicit) 主要用于单页应用(SPA),但已不推荐
密码模式(Password) 用户直接把账号密码给客户端,安全性差,已不推荐
客户端凭证模式(Client Credentials) 应用于系统对系统之间的服务访问(如微服务内部通信)

OAuth 2 的常见误解

  • OAuth 是授权,不是认证。
    想要“登录身份”的还需要配合 OpenID Connect。
  • Access Token 不等于用户身份。
    Access Token 是授权代表,不能直接断言用户是谁。
更新于 2025-07-28
在线,1小时前登录

查看OAuth 2.0更多相关的文章或提一个关于OAuth 2.0的问题,也可以与我们一起分享文章