什么是 OAuth?
OAuth(开放授权)是一种开放标准授权协议,允许用户授予第三方应用程序有限访问其资源的权限,而无需共享其凭据。它通过访问令牌实现安全的委托访问。
快速了解
| 全称 | 开放授权 |
|---|---|
| 创建时间 | 2007 年(OAuth 1.0),2012 年(OAuth 2.0 RFC 6749) |
| 规范文档 | 官方规范 |
OAuth 工作原理
OAuth 通过在资源所有者批准后向第三方客户端发放访问令牌来工作。最常见的流程(授权码模式)涉及将用户重定向到授权服务器,用户在那里进行身份验证并批准访问。然后服务器返回授权码,该授权码被交换为访问令牌。OAuth 2.0 是当前版本,被 Google、Facebook、GitHub 和其他主要平台广泛用于 API 访问和社交登录。
主要特点
- 基于令牌的授权(不是认证)
- 支持多种授权类型(授权码、客户端凭据等)
- 作用域定义授予的访问级别
- 刷新令牌用于获取新的访问令牌
- 角色分离:资源所有者、客户端、授权服务器、资源服务器
- 安全性要求使用 HTTPS
常见用途
- 社交登录(使用 Google/Facebook/GitHub 登录)
- 第三方 API 访问
- 移动应用认证
- 微服务授权
- 单点登录(SSO)实现
示例
OAuth 2.0 授权码流程:
1. 用户点击「使用 GitHub 登录」
2. 重定向到:https://github.com/login/oauth/authorize
?client_id=YOUR_CLIENT_ID
&redirect_uri=https://yourapp.com/callback
&scope=user:email
3. 用户批准访问
4. GitHub 重定向到:https://yourapp.com/callback?code=AUTH_CODE
5. 用授权码交换访问令牌
6. 使用令牌访问 GitHub API