这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
为什么需要 OAuth
一个常见误解
OAuth 经常被说成「第三方登录协议」。更准确地说:OAuth 是授权协议——用户允许一个应用访问自己在另一个服务中的部分资源。第三方登录通常是在 OAuth 之上再获取用户身份信息。
这个区别很重要。把 OAuth 当成「登录协议」,就容易在授权边界上犯错。
最糟糕的做法
假设用户想用 GitHub 登录你的系统。最糟糕的做法是:让用户把 GitHub 密码交给你。
❌ 用户 -> 你的系统「请告诉我 GitHub 密码」
-> 你用他的密码登录 GitHub,读取所有信息
密码一旦交出,你就拥有了该用户在 GitHub 的全部权限,而且用户完全无法控制你看了什么。这也是为什么正规平台永远不会这么做。
OAuth 的价值
OAuth 解决的是:用户不暴露密码,只授权你的系统获得有限信息。
✅ 用户 -> 你的系统 -> 跳转 GitHub 授权页
-> GitHub 展示「该应用将获取你的公开信息」
-> 用户点击「授权」
-> GitHub 颁发受限的 access token
-> 你的系统用这个 token 获取被授权的信息
关键差异:
- 用户密码永远不会离开 GitHub。
- 授权范围用户可见可控(只授权公开资料,不授权仓库、支付等)。
- 授权可随时撤销。
为什么用户愿意
对用户来说,这解决了「记不住那么多密码」的问题,也避免了「为了一个小应用把密码交出去」的风险。对平台来说,这是标准的安全接入方式。
什么时候用 OAuth
- 第三方登录:让用户用 GitHub / 微信 / Google 身份登录你的系统。
- 资源授权:让应用访问用户在你的服务中的数据(如「用微信授权读取头像」)。
- 开放平台:让第三方应用代表用户调用你的 API。
如果你的场景是「同一组织内部多个系统共享身份」,那更贴近 SSO(上一章);OAuth 更多面向跨信任域的第三方授权。两者可以组合,但不要混淆。
一句话
OAuth 的本质是把「你是谁」和「你授权我做什么」分开:密码属于平台,授权由用户说了算。下一节看最常用的授权码流程是怎么落地这一步的。
发现内容有问题?
告诉我们哪里需要改进。
