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 个角色:
💡 直白一点:
你(资源所有者)有一张银行卡(微信账号)
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 种常见的授权方式:
推荐:
🔹 Web 应用一般用“授权码模式”(安全性高)。
🔹 服务器间调用 API 一般用“客户端模式”(不涉及用户登录)。
OAuth 2.0 的实际应用
✅ 第三方登录(微信 / QQ / GitHub / Google 登录)
✅ 开放 API 授权(小程序调用支付宝支付)
✅ 多端账号授权(Steam 登录 Epic 游戏)
✅ 物联网设备授权(智能家居 APP 连接设备)
OAuth 2.0 和 SSO(单点登录)的区别
💡 简单来说:OAuth 2.0 侧重授权(你能访问什么资源),而 SSO 侧重身份认证(你是谁)。
🚀 总结
🔹 OAuth 2.0 是一种授权协议,用于安全地让第三方应用访问用户资源,而不暴露账号密码。
🔹 核心机制:通过 授权服务器发放 Token,让客户端用 Token 访问资源。
🔹 应用广泛:第三方登录、开放 API、支付授权等。
🔹 与 SSO 不同:OAuth 2.0 是授权机制,SSO 是认证机制,两者可以结合使用。
💡 记住 OAuth 2.0 的口号:
“不分享密码,只分享 Token!” 🚀