什么是 开放授权?

开放授权(OAuth)是一种开放标准授权协议,允许用户授权第三方应用访问其资源而无需共享密码。它通过访问令牌实现安全的委托访问,广泛应用于社交登录(如使用 Google/GitHub 登录)、API 授权和单点登录等场景。

快速了解

创建时间2007 年(OAuth 1.0),2012 年(OAuth 2.0 RFC 6749)
规范文档官方规范

工作原理

OAuth 通过在资源所有者批准后向第三方客户端发放访问令牌来工作。最常见的流程(授权码模式)涉及将用户重定向到授权服务器,用户在那里进行身份验证并批准访问。然后服务器返回授权码,该授权码被交换为访问令牌。OAuth 2.0 是当前版本,被 Google、Facebook、GitHub 和其他主要平台广泛用于 API 访问和社交登录。

主要特点

  • 基于令牌的授权(不是认证)
  • 支持多种授权类型(授权码、客户端凭据等)
  • 作用域定义授予的访问级别
  • 刷新令牌用于获取新的访问令牌
  • 角色分离:资源所有者、客户端、授权服务器、资源服务器
  • 安全性要求使用 HTTPS

常见用途

  1. 社交登录(使用 Google/Facebook/GitHub 登录)
  2. 第三方 API 访问
  3. 移动应用认证
  4. 微服务授权
  5. 单点登录(SSO)实现

示例

loading...
Loading code...

常见问题

OAuth 和身份认证有什么区别?

OAuth 是授权协议,而不是认证协议。认证验证你是谁(身份),而授权决定你可以访问什么(权限)。OAuth 允许用户授予第三方应用程序对其资源的有限访问权限,而无需共享密码。对于认证,OpenID Connect (OIDC) 构建在 OAuth 2.0 之上,添加了身份层以提供用户认证。

OAuth 2.0 有哪些不同的授权类型?

OAuth 2.0 定义了几种授权类型:授权码模式(最安全,用于服务器端应用)、带 PKCE 的授权码模式(用于移动/SPA 应用)、客户端凭据模式(用于机器对机器)、隐式模式(已弃用,曾用于浏览器应用)和资源所有者密码模式(遗留,不推荐)。带 PKCE 的授权码流程现在推荐用于大多数应用程序,包括移动和单页应用。

什么是 PKCE,为什么它很重要?

PKCE(Proof Key for Code Exchange,代码交换证明密钥)是一种安全扩展,保护授权码流程免受拦截攻击。它的工作原理是让客户端生成一个随机的代码验证器和其转换后的代码挑战。挑战随授权请求发送,验证器在交换令牌时发送。这确保只有原始客户端才能完成流程,即使授权码被拦截也是如此。

访问令牌和刷新令牌有什么区别?

访问令牌是用于访问受保护资源(API)的短期凭据。它们通常在几分钟到几小时后过期。刷新令牌是用于获取新访问令牌的长期凭据,无需用户交互。这种分离提高了安全性:如果访问令牌被泄露,它只在短时间内有效,而刷新令牌可以更安全地存储,并在需要时撤销。

OAuth 作用域是如何工作的?

作用域定义了应用程序请求的特定权限。当用户授权应用程序时,他们会看到正在请求的作用域(例如,'read:user'、'write:repos')。授权服务器在访问令牌中包含授予的作用域。然后资源服务器检查这些作用域以确定是否应该允许请求。这实现了细粒度的访问控制,并遵循最小权限原则。

相关工具

相关术语

相关文章

Base64编码解码详解【2026】- 原理、应用与代码示例

深入系统地学习前端与后端开发中无处不在的 Base64 编码与解码(Encode/Decode)底层运行原理与实战高级应用。彻底掌握如何将复杂的二进制文件数据流安全转换为纯 ASCII 文本字符串序列的核心技术。文章包含 JavaScript、Python、Java 多语言的完整代码实战示例,全面涵盖前端图片 Data URL 优化内联、后端 JWT(JSON Web Token)安全令牌生成、以及跨域 HTTP 基本身份认证(Basic Auth)等高频常见业务场景。

2024-01-15

Bearer Token认证详解【2026】- API安全最佳实践与实现

深入硬核学习现代 RESTful API 设计中无处不在的 Bearer Token 无状态身份认证体系底层机制与企业级最佳安全防范实践。全面掌握 OAuth 2.0 与 OIDC 授权框架中的访问令牌(Access Token)安全分发流程,以及在前端单页应用(SPA)与移动端 App 中如何正确管理 Token 存储、实施刷新(Refresh)机制与防范网络拦截抓包和跨站脚本(XSS/CSRF)攻击风险,彻底确保系统接口的数据安全。

2024-01-17

Data URL详解【2026】- 内联资源嵌入最佳实践

深入系统学习前端 Data URL(数据统一资源定位符)的核心渲染机制原理与高级性能优化应用。全面掌握如何在 CSS 或 HTML 中直接内联嵌入图片、SVG 矢量图标和自定义 Web 字体,从而有效减少 HTTP 网络请求并大幅优化 Web 页面首屏加载时间。本指南涵盖 Base64 编码体积膨胀机制、浏览器缓存策略权衡分析,并附带基于 Webpack/Vite 的完整前端构建实战代码示例!

2024-01-18