OAuth 2.0是一种开放的授权标准,允许用户在不泄露密码的前提下,授权第三方应用访问自己在某个服务上的部分数据。它通过颁发有时效的访问令牌来代替直接共享账号密码,是当今各类第三方登录和API授权的主流方案。

| 类型 | 授权框架 |
| 标准 | RFC 6749 |
| 核心凭证 | 访问令牌 |
| 主流模式 | 授权码模式 |
| 常配合 | PKCE、OpenID Connect |
OAuth 2.0是一种被广泛采用的授权框架,让用户能够在不向第三方应用交出账号密码的情况下,授予其访问自己在资源服务器上特定资源的有限权限,由IETF在RFC 6749中定义,是各类开放平台API授权和社交账号登录的基础。
设想你想让某个记账应用读取你的银行流水,直接把银行密码交给它显然极不安全。OAuth 2.0引入了访问令牌这一中间凭证:用户在银行的授权页面登录并同意后,银行颁发一个有限权限、有有效期的令牌给记账应用,应用凭令牌访问数据,却始终看不到用户密码,用户也可随时撤销授权。
OAuth 2.0定义了四个核心角色:
最经典的是授权码模式:客户端把用户重定向到授权服务器,用户登录并同意授权后,授权服务器返回一个一次性授权码,客户端再用授权码在后端换取访问令牌,避免令牌暴露在浏览器地址栏中。其他还有适用于纯前端应用的隐式模式(现已不推荐)、机器对机器的客户端凭证模式等。为增强移动端和单页应用的安全性,通常配合PKCE扩展防止授权码被截获。需要注意的是,OAuth 2.0本质是授权协议而非身份认证协议,若要获取用户身份信息,应使用在其之上构建的OpenID Connect。
OAuth 2.0几乎支撑了所有第三方登录场景,如用微信、谷歌、GitHub账号登录其他网站;也广泛用于开放API授权,让开发者应用在用户许可下调用微博、地图、支付等服务。
问:OAuth 2.0和OAuth 1.0兼容吗?答:不兼容。2.0是全新设计,简化了签名流程、更依赖HTTPS传输安全,并区分了多种授权模式,与1.0没有向后兼容关系。
问:用OAuth做第三方登录安全吗?答:协议本身安全,但实现细节至关重要。常见坑包括未校验重定向地址、令牌泄露、把OAuth当认证误用等,应严格遵循规范并优先使用授权码加PKCE模式。

| 类型 | 授权框架 |
| 标准 | RFC 6749 |
| 核心凭证 | 访问令牌 |
| 主流模式 | 授权码模式 |
| 常配合 | PKCE、OpenID Connect |
登录 后参与讨论
暂无讨论,来发表第一条评论吧