OAuth 概述
Oauth(开放授权)是一种身份验证协议,允许用户向另一个网站或应用程序授予对其在一个网站或应用程序上的资源的有限访问权限,而无需共享其实际登录凭据。
OAuth 就像一个值得信赖的中间人,使您能够授予一项服务从另一项服务访问您的数据的权限,而无需透露您的用户名和密码。本文档包括 OAuth 工作流程的技术说明和实际的 OAuth 类比。
OAuth 工作流程
OAuth 为用户提供了一种安全且标准化的方式,允许用户跨不同网站和应用程序授予对其数据的访问权限,而无需共享其登录凭据。它确保您可以控制哪些服务可以访问您的数据,并允许您随时撤销访问权限。
以下列表是 OAuth 工作原理的分步说明。
您(用户)想要使用需要访问另一个网站或应用程序(称为“资源服务器”)上的数据的网站或应用程序(称为“客户端”)。
客户端请求从资源服务器访问您的数据的权限。它通常通过将您重定向到资源服务器的登录页面来实现此目的。
您直接在资源服务器的登录页面上输入登录凭据。此步骤至关重要,因为您的用户名和密码永远不会与客户端共享。
资源服务器验证您的凭据并对您进行身份验证。经过身份验证后,它会为客户端生成唯一的访问令牌。
资源服务器将您重定向回客户端应用程序,并提供访问令牌和重定向。
客户端接收访问令牌,并在需要访问您的数据时将其发送到资源服务器。
资源服务器检查访问令牌的有效性。如果令牌有效,它将授予客户端在有限时间内访问所请求资源的权限。
客户端可以使用授予的访问权限来检索或修改资源服务器上的数据,但仅限于访问令牌定义的范围内。范围确定客户端可以访问哪些操作和数据。
如果访问令牌过期或者客户端需要额外的权限,客户端可以通过再次执行身份验证过程来请求新的访问令牌。
实际的 OAuth 类比
下面通过实际场景来类比 OAuth 的工作原理。
想象一下,您要举办一个聚会,并且您想雇用一名餐饮承办商(客户端)来处理食物。但是,您不想向餐饮承办商提供您家的钥匙(您的登录凭据),因为这将使他们能够访问您的所有个人物品。因此,您可以使用可信方组织者 (OAuth) 来管理访问。
您告诉聚会组织者您想雇用一名餐饮承办商。聚会组织者知道如何处理对您的房子的访问以及餐饮承办商的服务。
聚会组织者联系餐饮承办商并派他们到您家开会。此时你不在家。
餐饮承办商到达您家,但意识到未经您的许可(访问令牌)他们无法进入。他们打电话给您请求访问权限。
作为房主,您希望在授予访问权限之前验证餐饮承办商的可信度。因此,您向餐饮承办商询问一些问题以确认他们的身份(身份验证)。
一旦您对餐饮承办商的凭据感到满意,您可以通过电话向他们提供临时访问代码(访问令牌)。此代码允许他们进入您的房屋并准备食物,但仅限于其餐饮职责范围内。
餐饮承办商使用访问代码进入您的房屋并开始准备食物。他们可以进入厨房和用餐区,但不得进入其他房间。
经过指定时间或聚会结束后,访问代码就会过期,确保餐饮承办商在未经您许可的情况下无法重新进入您的房屋。
在这种情况下,您(房主)是用户,餐饮承办商是客户端应用程序,您的房屋代表您在资源服务器上的个人数据,聚会组织者是 OAuth。
访问代码充当访问令牌,允许客户端(餐饮承办商)有限地访问您的资源(房屋),而不会泄露您的登录凭据(房屋钥匙)。
OAuth 充当受信任的中介,促进服务之间数据的安全共享,同时保持对访问权限的控制。