什么是 OAuth 2.0(第三方授权 · 临时门禁卡)?
你想让扫地机器人 App 帮你打扫房间,传统做法是把家门钥匙(账号密码)直接交给外人,他随时能打开你的卧室和保险柜;而 OAuth 2.0 就像“物业大堂给保洁阿姨发一张智能临时门禁卡(Access Token)” —— 只能在周二下午开客厅的门,进不去卧室,过期自动作废,你随时可以一键吊销它!
交出主钥匙,隐私彻底失控
早期第三方软件(如邮件客户端、相册打印)为了同步数据,会直接弹窗让你输入主账号的真实账号与密码。第三方不仅能明文保存你的密码,还能以你的名义修改密码、转账消费!
- ❌ 权限失控:第三方拥有与你本人 100% 相同的超级管理员权限
- ❌ 一损俱损:只要一家第三方被黑,你的主账号彻底沦陷
用 Google/微信登录,第三方全程不见密码
跳转到微信/谷歌官方收银台进行认证,用户明确勾选“只允许读取公开头像与昵称(Scope)”。官方下发一张有时效、有范围限制的 Access Token 令牌,第三方永远碰不到你的密码!
- ✨ 密码零泄露:用户只在官方域名下输密码,第三方碰不到
- ✨ 精细控制:支持按需授权只读、限时 2 小时、随时吊销
拆解 OAuth 2.0 体系的 4 大核心基石
从四大角色到令牌续期,读懂互联网授权第一协议
1. 四大核心角色分工
资源拥有者 (用户)、客户端 (第三方App)、授权服务器 (Google/微信登录中心)、资源服务器 (存储相册/资料的 API)。
2. Scope (权限范围控制)
支持极细粒度的权限申请(如 read:profile、write:photos),绝不多给一个多余权限。
3. Access Token (短期门禁卡)
无状态或加密的字符串(常用 JWT 格式),有效时间通常只有 1~2 小时,即使被中间人截获也会迅速过期。
4. Refresh Token (长期续期卡)
保存在后端安全服务器上。当短期 Access Token 过期时,在后台静默换取新卡,用户完全无需重新手动扫码登录。
🕹️ 经典授权码模式 (Authorization Code Flow) 演练台
观察你在网页点击“使用微信/Google 登录”时,前后端数据包的完整流转过程:
页面跳转到
accounts.google.com 官方安全域名。用户输入密码/生物识别完成认证,并确认权限范围!
前端浏览器绝不能直接拿 Token
如果授权服务器直接把 Access Token 通过 URL 参数返回给浏览器前端;
Token 极易通过浏览器历史记录、Referer 头或 XSS 漏洞被恶意脚本窃取。用一次性 Code 在后端服务器之间暗中换 Token,才是最高安全防线!
彻底消灭 Client Secret 泄露风险
手机 App(iOS/Android)或纯前端 SPA 无法安全存储 Client Secret(客户端密钥)。
PKCE(Proof Key for Code Exchange) 通过动态生成一次性随机密码哈希挑战(Code Challenge),彻底杜绝了授权码被恶意 App 拦截伪造!
随手掐断第三方的访问通道
当你在某款软件停用服务后;
只需打开 Google 账号的“安全性 ➔ 第三方应用与服务”,点击“移除访问权限”,官方授权中心立即作废该 Token,第三方瞬间失去所有权限,再无后顾之忧!