主页 Think Page Title OAuth 什么是 OAuth(开放授权)?
深入了解 IBM 的高级身份验证解决方案 订阅 Think 时事通讯
云、手机、指纹和复选标记的象形图。

发布日期:2024 年 7 月 29 日
作者:Gregg Lindemulder、Matt Kosinski

什么是开放授权 (OAuth)?

开放授权 ( OAuth ) 是一种开放标准授权框架,它授予应用程序访问最终用户受保护资源(例如其照片、日历或社交媒体帖子)的权限,而无需用户帐户的登录名或密码。

要求用户“使用 Google 登录?”或“允许访问您的账户信息?”的网站和第三方应用程序。是 OAuth 的常见用例。通过 OAuth 协议,用户可以在不共享其用户凭证的情况下,轻松授予这些应用程序访问其账户数据的权限。

除了 Web 应用程序之外,OAuth 还可以授予对 API、服务器端应用程序、操作系统本地应用程序、移动应用程序以及智能电视和家电等设备授予资源访问权限。在某些情况下,由于 OAuth 可以代表组织或企业账户授权应用程序访问,因此不需要人类用户的参与。

KuppingerCole 访问管理领导力指南针

了解为什么 KuppingerCole 称 IBM 是提供成熟、可扩展和安全的企业身份验证解决方案的领导者。

OAuth 为什么重要?

OAuth 通过防止登录数据被访问并限制对其他敏感信息的访问,为用户、开发人员和企业提供了重要的访问管理优势。它还能让应用程序更轻松地访问必要的账户信息,而不会出现共享用户凭据的安全漏洞。

一个由软件开发人员组成的小团队于 2007 年发布了 OAuth 1.0。该协议的第一个版本是作为 Web 身份验证的替代方案而设计的,因为 Web 身份验证要求用户与第三方服务共享用户名和密码。但是,OAuth 1.0 仅为网站提供授权流程。

2012 年,互联网工程任务组 (IETF) 发布了 OAuth 2.0,即 RFC 6749 和 RFC 6750。RFC(请求意见稿)是描述互联网通信协议的 IETF 文档。RFC 6749 是 OAuth 2.0 的核心框架,而 RFC 6750 则定义了该框架如何使用访问令牌。

此更新版本的 OAuth 将协议扩展到了 Web 浏览器之外,包括应用程序、应用程序接口和设备的授权功能。OAuth 2.0 取代了 OAuth 1.0,现已成为行业标准。

OAuth 的工作原理

与其他依赖用户名和密码的框架不同,OAuth 是一种基于访问令牌的授权协议。访问令牌是确定允许应用程序访问的特定资源的信息片段。OAuth 协议定义了授权请求流程中每个组件如何批准、定义和管理访问令牌。

OAuth 令牌通常使用 JSON Web 令牌 (JWT) 标准,因为它能安全地传输数据。

OAuth 框架的主要组件包括:

  • 资源所有者
  • 资源服务器
  • 客户
  • 授权服务器
  • 确定范围
资源所有者

这是应用程序要访问的账户(如 Facebook 或 Google 账户)的最终用户。资源所有者同意应用程序访问该账户中的某些受保护资源,如照片或个人数据。在某些情况下,资源所有者可能是公司或企业账户。

资源服务器

这是代表用户存储受保护资源的服务器。资源服务器接受并验证从客户端收到的 OAuth 令牌,然后提供资源所有者同意发布的用户数据。

客户

客户端是请求访问的应用程序、网站、应用程序接口或设备。它通过提交客户端 ID 向授权服务器申请授权。然后,在资源所有者同意后,客户端会收到一个访问令牌,可以用来访问资源服务器上受保护的资源。

授权服务器

这是驱动 OAuth 协议的主要服务器。它通过两个端点来授予对资源服务器的访问权限。

 授权端点 会提示资源所有者同意使用特定的受保护资源。然后, 令牌端点 接收来自 OAuth 客户端的令牌请求,并生成新的访问令牌,授予对资源的访问权限。

作用域

作用域是资源服务器上受保护资源的访问参数。

例如,可能会要求资源所有者同意访问电子邮件、文件或照片等数据。该作用域限制客户只能访问这些项目。

OAuth 流程示例

以下是 OAuth 流程如何运行的基本概述:

  1. Jim( 资源所有者)希望允许社交媒体网站(客户端)访问他的电子邮件联系人(资源)。

  2. 电子邮件 授权服务器会提示 Jim 同意此访问权限。

  3. 在获得吉姆的同意后,授权服务器会向社交媒体网站提供一个访问令牌。

  4. 社交媒体网站向存储 Jim 电子邮件帐户信息的资源服务器发送访问令牌。

  5. 资源服务器会识别访问令牌,并允许社交媒体网站访问 Jim 的电子邮件联系人。由于访问令牌包括 Jim 的同意范围,因此社交媒体网站无法访问 Jim 账户中的任何其他数据。
OAuth 授权类型

向应用程序提供访问令牌的过程称为授权授予授权流程。不同类型的应用程序、设备或应用程序接口可使用不同的授权类型和 OAuth 流程,例如:

  • 授权代码
  • 代码交换证明密钥 (PKCE)
  • 客户端凭证
  • 隐式授权
  • 刷新令牌
授权代码

此授权类型通常用于 Web 应用程序和移动应用程序。在授权代码流程中,授权服务器向客户端提供一次性授权代码。然后,客户端可以从授权服务器的令牌端点将授权代码换成访问令牌。

代码交换证明密钥 (PKCE)

此流程为授权代码授予增加了额外的安全性,以保护应用程序免受代码注入攻击。这类攻击会诱使应用程序运行恶意代码,从而改变其运行方式。

PKCE 添加了一个“客户端密钥”,用于在发放访问令牌之前向授权服务器验证客户身份。由于只有合法客户端才拥有该秘密,恶意行为者无法冒充客户端并引入恶意代码。

客户端凭证

此类授权适用于不涉及人类用户的情况,例如自动化流程、机器对机器交互和微服务。

应用程序被授予访问执行功能所需的系统资源的权限,但无权访问最终用户资源。 例如,客户端凭证可能允许天气应用程序访问应用程序接口以检索有关最新预报的数据。 

隐式授权

此授权类型为 JavaScript 网络应用程序提供了更简单的流程。与授权码授权不同,隐式流程在发放访问令牌前不需要授权码。

相反,在用户提供同意后,访问令牌会包含在重定向 统一资源标识符  (URI) 中,该标识符将用户返回到请求访问的应用程序。应用程序从 URI 获取访问令牌。

刷新令牌

如果访问令牌已过期,此授予类型会为应用程序提供一个可兑换新访问令牌的刷新令牌。如果没有刷新令牌,最终用户就必须再次表示同意,应用程序才能收到新的访问令牌。

SSO 和 OAuth 有什么区别?

两者的根本区别在于,单点登录 (SSO) 是一种用户身份验证协议,而 OAuth 是一种授权协议。

SSO 通常使用身份提供者 (IdP) 和基于 可扩展标记语言 (XML) 的 安全断言标记语言 (SAML),通过用户名和密码验证用户的数字身份。

OAuth 不会对用户进行身份验证,但会授权用户访问系统资源。SSO 解决方案有时会使用 OAuth,使经过身份验证的用户能够轻松访问整个企业的应用程序和服务。

什么是 OpenID Connect?

OpenID Connect (OIDC) 是一种建立在 OAuth 2.0 基础上的身份验证协议。OpenID Connect 可以协同工作,验证用户的身份,然后 OAuth 可以授权该用户访问资源和服务。 

相关解决方案
IBM Verify

利用人工智能,在混合云中保护和管理客户、员工队伍和特权身份。

深入了解 IBM Verify

 IBM Verify (SaaS)

为用户访问数据和应用程序添加深度内容、智能和安全性。

深入了解 IBM Verify (SaaS)

IBM API Connect

保护、控制和调解对应用程序接口的访问,使其免受日益加剧的威胁。 

探索 IBM API Connect
资源 《数据泄露的代价》报告

获取重要洞察分析,帮助您的安全和 IT 团队更好地管理风险并限制潜在损失。

X-Force Threat Intelligence 指数

了解最新的网络攻击策略,更好地保护人员、数据和基础设施。

什么是身份验证?

在计算机系统中,身份验证(简称“认证”)是一个验证用户身份的过程。

采取后续步骤

IBM Security Verify 是领先的 IAM 平台,提供 AI 驱动的功能来管理员工队伍和客户需求。统一身份孤岛,可以降低基于身份的攻击的风险并提供现代身份验证,包括无密码功能。

深入了解 Verify 试用 Verify 90 天