Skip to content

OAuth 2.0是什么?

Published: at 12:00 AM

摘要

了解OAuth 2.0是什么,它是如何工作的,以及为什么它成为了授权和认证的行业标准。

原文 What Is OAuth 2.0?


2023年9月7日· 11分钟

OAuth 2.0是一个授权框架,允许用户在不同应用程序之间安全地分享其数据。它是解决在分享用户凭证时相关的API安全问题的行业标准,为网页、移动、桌面和IoT应用提供了简单、定义明确的授权流程。

这里,我们将回顾OAuth 2.0的历史,然后讨论它是如何工作的。随后,我们将探索使用OAuth 2.0的一些好处、挑战以及最佳实践,并强调Postman API平台中有助于简化OAuth工作流程的一些特性。

OAuth 2.0的历史是什么?

每天,数百万人与多个应用程序交互,并在它们之间分享数据。例如,一个使用健身应用跟踪其每日锻炼的人可能想要开始使用一个新的饮食计划应用来监测他们的营养摄入和卡路里消耗。饮食计划应用可能会要求用户分享其来自健身应用的数据,以创建更加定制化的体验。虽然这种类型的集成有许多好处,但它也伴随着几个安全隐患:

OAuth从2007年开始作为一个社区努力,目前由互联网工程任务组(IETF)开发和维护,通过引入基于令牌的授权机制解决了这些挑战。通过引入令牌作为授权手段,OAuth消除了用户需要与第三方应用程序分享其实际凭据的需求。它还允许用户在授权时定义特定的访问范围,确保应用程序只访问它们需要的资源。此外,OAuth使用户能够明确授权应用程序进行特定操作,并随时撤销访问权限,使他们能够掌控自己的数据和隐私。

OAuth 2.0是如何工作的?

在你能理解OAuth 2.0如何工作之前,你必须首先了解OAuth 2.0工作流程中涉及的四个特定角色。这些角色是:

OAuth 2.0使资源所有者(即用户)能够给客户端(即第三方应用程序)访问其数据的权限,而无需分享其凭证。相反,凭证被分享给授权服务器,该服务器向客户端发放访问令牌。然后,客户端可以使用此访问令牌从资源服务器获取用户的数据。

让我们用前面部分的例子来探索这是如何工作的。在OAuth上下文中,新的饮食计划应用是客户端;它想要访问健身应用中用户的数据。健身应用拥有一个资源服务器和一个授权服务器,授权服务器授权访问资源服务器。

由于饮食计划应用是客户端,它将向用户展示从健身应用导入其健身历史数据的选项。如果用户决定继续,他们将被重定向到健身应用,那里将提示他们输入用户名和密码。如果用户成功登录健身应用,他们将看到一个屏幕,可以查看客户端希望访问的数据。如果用户同意请求的范围,他们将授权该请求。然后,用户将被重定向回饮食计划应用,此时他们来自健身应用的健身历史现在将可见。

以下是幕后发生的所有步骤的逐步分解:

  1. 客户端(饮食计划应用)要求用户在健身应用的资源服务器上访问其资源。
  2. 用户通过在健身应用中使用其凭证登录来向客户端授权访问,这些凭证不与客户端共享。相反,生成一个授权码并与客户端共享。
  3. 客户端使用此授权码从授权服务器提供的端点请求访问令牌。
  4. 授权服务器生成并返回访问令牌,客户端可以使用它来访问资源服务器上用户的资源。
  5. 客户端将访问令牌发送到资源服务器,以请求访问用户的资源。
  6. 资源服务器使用授权服务器验证访问令牌。如果令牌有效,它将授予客户端访问用户资源的权限。

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

如上所述,授权服务器在用户授权请求后向客户端授予访问令牌。然后客户端使用此访问令牌从资源服务器检索用户的数据。访问令牌可以存储在不同的格式中,最常见的是JWT(JSON Web Token)格式。这种格式允许令牌包含加密数据,在令牌过期之前可以安全检索。

访问令牌通常是短暂的,因此需要在到期时重新生成。刷新令牌用于获取新的访问令牌,并且通常比访问令牌有更长的寿命。然而,并非所有OAuth提供者都发放刷新令牌。

什么是授权许可,以及主要类型是什么?

授权许可是表示用户同意向客户端授予访问其在资源服务器上受保护资源的同意的凭证。一旦客户端收到许可,就可以将其兑换为访问令牌。OAuth 2.0定义了四种主要类型的授权许可:

授权码许可

在上面的例子中,我们提到授权服务器在用户成功登录后生成一个代码并与客户端共享。这个代码,被称为“授权码”,是最安全和最常见的授权许可类型。它涉及一个两步过程。首先,客户端将用户重定向到授权服务器,用户在那里登录并授予权限。然后授权服务器向客户端提供授权码。在第二步中,客户端将授权码换成访问令牌,还可选择性地换取刷新令牌。

隐式许可

隐式许可设计用于基于浏览器的应用程序,如单页Web应用。在这个流程中,访问令牌直接从授权端点返回给客户端,而不进行授权码交换。这简化了流程,但使令牌更容易暴露,因为它可能被记录在浏览器的历史记录中或被恶意行为者截获。因此,它不推荐使用,并已在OAuth 2.0中弃用。

资源所有者密码凭证(ROPC)许可

在这种授权类型中,资源所有者的凭证直接与客户端共享,客户端使用这些凭证每次都从授权服务器获取访问令牌。因为ROPC涉及直接共享用户凭证,它较不安全,只应在资源所有者对客户端有高度信任时使用。

客户端凭证许可

当客户端应用程序(通常是服务器端应用程序)需要访问其自己的资源时,使用这种授权类型获取访问令牌。它适用于客户端应用程序是资源所有者并且需要访问其拥有或控制的受保护资源的情况。

使用OAuth 2.0的好处是什么?

OAuth 2.0提供了许多好处,使其成为了主要科技公司、社交媒体应用、金融应用等的授权黄金标准。这些好处包括:

使用OAuth 2.0时有哪些最佳实践?

在实现OAuth 2.0时,遵循以下最佳实践至关重要,以保护你的应用程序和用户数据的安全:

实现OAuth 2.0的一些挑战是什么?

虽然OAuth 2.0提供了许多好处,但它仍然带来了几个挑战,开发人员必须考虑这些以确保成功实施。这些挑战包括:

Postman如何帮助您使用OAuth 2.0?

Postman API平台包括许多使用户更容易使用OAuth 2.0的功能。借助Postman,您可以: