发布日期:2024 年 7 月 29 日
作者:Gregg Lindemulder、Matt Kosinski
开放授权 ( OAuth ) 是一种开放标准授权框架,它授予应用程序访问最终用户受保护资源(例如其照片、日历或社交媒体帖子)的权限,而无需用户帐户的登录名或密码。
要求用户“使用 Google 登录?”或“允许访问您的账户信息?”的网站和第三方应用程序。是 OAuth 的常见用例。通过 OAuth 协议,用户可以在不共享其用户凭证的情况下,轻松授予这些应用程序访问其账户数据的权限。
除了 Web 应用程序之外,OAuth 还可以授予对 API、服务器端应用程序、操作系统本地应用程序、移动应用程序以及智能电视和家电等设备授予资源访问权限。在某些情况下,由于 OAuth 可以代表组织或企业账户授权应用程序访问,因此不需要人类用户的参与。
了解为什么 KuppingerCole 称 IBM 是提供成熟、可扩展和安全的企业身份验证解决方案的领导者。
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 令牌通常使用 JSON Web 令牌 (JWT) 标准,因为它能安全地传输数据。
OAuth 框架的主要组件包括:
这是应用程序要访问的账户(如 Facebook 或 Google 账户)的最终用户。资源所有者同意应用程序访问该账户中的某些受保护资源,如照片或个人数据。在某些情况下,资源所有者可能是公司或企业账户。
这是代表用户存储受保护资源的服务器。资源服务器接受并验证从客户端收到的 OAuth 令牌,然后提供资源所有者同意发布的用户数据。
客户端是请求访问的应用程序、网站、应用程序接口或设备。它通过提交客户端 ID 向授权服务器申请授权。然后,在资源所有者同意后,客户端会收到一个访问令牌,可以用来访问资源服务器上受保护的资源。
这是驱动 OAuth 协议的主要服务器。它通过两个端点来授予对资源服务器的访问权限。
授权端点 会提示资源所有者同意使用特定的受保护资源。然后, 令牌端点 接收来自 OAuth 客户端的令牌请求,并生成新的访问令牌,授予对资源的访问权限。
作用域是资源服务器上受保护资源的访问参数。
例如,可能会要求资源所有者同意访问电子邮件、文件或照片等数据。该作用域限制客户只能访问这些项目。
以下是 OAuth 流程如何运行的基本概述:
向应用程序提供访问令牌的过程称为授权授予或授权流程。不同类型的应用程序、设备或应用程序接口可使用不同的授权类型和 OAuth 流程,例如:
此授权类型通常用于 Web 应用程序和移动应用程序。在授权代码流程中,授权服务器向客户端提供一次性授权代码。然后,客户端可以从授权服务器的令牌端点将授权代码换成访问令牌。
此流程为授权代码授予增加了额外的安全性,以保护应用程序免受代码注入攻击。这类攻击会诱使应用程序运行恶意代码,从而改变其运行方式。
PKCE 添加了一个“客户端密钥”,用于在发放访问令牌之前向授权服务器验证客户身份。由于只有合法客户端才拥有该秘密,恶意行为者无法冒充客户端并引入恶意代码。
此类授权适用于不涉及人类用户的情况,例如自动化流程、机器对机器交互和微服务。
应用程序被授予访问执行功能所需的系统资源的权限,但无权访问最终用户资源。 例如,客户端凭证可能允许天气应用程序访问应用程序接口以检索有关最新预报的数据。
此授权类型为 JavaScript 网络应用程序提供了更简单的流程。与授权码授权不同,隐式流程在发放访问令牌前不需要授权码。
相反,在用户提供同意后,访问令牌会包含在重定向 统一资源标识符 (URI) 中,该标识符将用户返回到请求访问的应用程序。应用程序从 URI 获取访问令牌。
如果访问令牌已过期,此授予类型会为应用程序提供一个可兑换新访问令牌的刷新令牌。如果没有刷新令牌,最终用户就必须再次表示同意,应用程序才能收到新的访问令牌。
OpenID Connect (OIDC) 是一种建立在 OAuth 2.0 基础上的身份验证协议。OpenID Connect 可以协同工作,验证用户的身份,然后 OAuth 可以授权该用户访问资源和服务。
获取重要洞察分析,帮助您的安全和 IT 团队更好地管理风险并限制潜在损失。
了解最新的网络攻击策略,更好地保护人员、数据和基础设施。
在计算机系统中,身份验证(简称“认证”)是一个验证用户身份的过程。