OAuth 2.0 是什么?

OAuth 2.0(Open Authorization 2.0)是一种 授权协议,用于在不同的应用之间 安全地授权访问 用户资源,而 无需直接暴露用户的账号和密码

💡 场景举例
你在一个网站 (A 网站) 注册时,发现可以 用微信/QQ/支付宝 登录,而 无需重新注册
👉 这就是 OAuth 2.0 在起作用 —— A 网站 不会获取你的微信密码,而是通过 OAuth 2.0 授权 让微信提供你的身份信息。


OAuth 2.0 的关键概念

OAuth 2.0 使用“令牌”(Token)来授权访问,而不是直接提供用户名和密码,主要涉及 4 个角色:

角色

作用

示例

资源所有者(Resource Owner)

拥有资源的用户

你(微信账号持有者)

客户端(Client)

需要访问资源的应用

A 网站(接入微信登录)

授权服务器(Authorization Server)

负责认证和颁发令牌

微信的 OAuth 服务器

资源服务器(Resource Server)

存储和保护用户资源

微信用户信息接口

💡 直白一点

  • 你(资源所有者)有一张银行卡(微信账号

  • A 网站(客户端)想获取你的消费记录(用户信息

  • 你不会直接给 A 网站银行卡密码,而是告诉银行(授权服务器

  • 银行给 A 网站一张临时授权卡(Token

  • A 网站用这张授权卡去银行(资源服务器)查询消费记录

✨ 这样你的微信密码不会泄露,A 网站也能安全地访问你的用户信息!


OAuth 2.0 授权流程

1️⃣ 用户访问客户端(A 网站),选择使用 “微信登录”
2️⃣ 客户端跳转到授权服务器(微信),微信让用户确认 是否授权 A 网站访问你的信息
3️⃣ 用户授权成功,微信返回授权码(Authorization Code)
4️⃣ 客户端用授权码向微信申请访问令牌(Access Token)
5️⃣ 微信返回 Access Token,A 网站可用它获取用户信息(如昵称、头像)。

🔹 关键机制:

  • Authorization Code(授权码) 只是临时的,不会直接暴露给客户端

  • Access Token(访问令牌) 允许客户端访问受保护的资源(但不能登录微信)

  • Refresh Token(刷新令牌) 允许客户端在 Access Token 过期后重新获取新的 Token


OAuth 2.0 的授权模式

OAuth 2.0 有 4 种常见的授权方式:

授权模式

适用场景

特点

授权码模式(Authorization Code)

第三方应用(如 A 网站接入微信登录)

安全性高,需服务器配合

简化模式(Implicit) 🚫

前端单页应用(SPA),现在基本不用

Token 直接暴露,不安全

密码模式(Password Credentials) 🚫

自己的 App

需要用户输入用户名+密码,不推荐

客户端模式(Client Credentials)

服务器对服务器

适用于 API 调用,无需用户参与

推荐
🔹 Web 应用一般用“授权码模式”(安全性高)。
🔹 服务器间调用 API 一般用“客户端模式”(不涉及用户登录)。


OAuth 2.0 的实际应用

第三方登录(微信 / QQ / GitHub / Google 登录)
开放 API 授权(小程序调用支付宝支付)
多端账号授权(Steam 登录 Epic 游戏)
物联网设备授权(智能家居 APP 连接设备)


OAuth 2.0 和 SSO(单点登录)的区别

特性

OAuth 2.0

SSO(单点登录)

用途

授权(Access Token)

认证(登录态管理)

应用场景

第三方 App 访问用户数据

企业系统内部登录

用户体验

授权后仍需注册

登录一次,所有系统通行

示例

微信/QQ 登录淘宝

阿里系(淘宝/天猫/支付宝)共享登录

💡 简单来说:OAuth 2.0 侧重授权(你能访问什么资源),而 SSO 侧重身份认证(你是谁)。


🚀 总结

🔹 OAuth 2.0 是一种授权协议,用于安全地让第三方应用访问用户资源,而不暴露账号密码。
🔹 核心机制:通过 授权服务器发放 Token,让客户端用 Token 访问资源
🔹 应用广泛:第三方登录、开放 API、支付授权等。
🔹 与 SSO 不同:OAuth 2.0 是授权机制,SSO 是认证机制,两者可以结合使用。

💡 记住 OAuth 2.0 的口号
“不分享密码,只分享 Token!” 🚀

功能点

SSO单点登录

OAuth2.0

统一认证

支持度高

支持度高

统一注销

支持度高

支持度低

多个系统会话一致性

强一致

弱一致

第三方应用授权管理

不支持

支持度高

自有系统授权管理

支持度高

支持度低

Client级的权限校验

不支持

支持度高

集成简易度

比较简单

难度中等

适合项目

企业内部项目整合

企业搭建统一认证授权平台,对外开放服务