📜  OAuth 2.0-访问受保护的资源(1)

📅  最后修改于: 2023-12-03 14:44:51.408000             🧑  作者: Mango

OAuth 2.0 - 访问受保护的资源

什么是 OAuth 2.0?

OAuth是一种可以让用户授权第三方应用程序访问他们在另一个服务提供商上存储的信息的标准协议。

与OAuth 1.0相比,OAuth 2.0被认为是更简单、更安全、更易于实现的。

OAuth 2.0 的角色

OAuth 2.0在请求和响应之间涉及四个角色:

  • 资源所有者 - 拥有受保护资源的用户(例如个人或组织)。
  • 客户端 - 要访问被保护资源的应用程序。
  • 授权服务器 - 管理授权流程并返回访问令牌的服务器。
  • 资源服务器 - 存储受保护资源的服务器,并能够根据请求传递有效的访问令牌来验证请求。
OAuth 2.0 的授权流程

OAuth 2.0定义了四种授权流程,它们各自适用于不同类型的应用程序和资源所有者。

在此,我们将介绍最常见的“授权码”流程,它被用于Web和移动应用程序。

  1. 客户端从资源所有者那里获取授权,使用以下四个步骤:

    1. 客户端将用户重定向到授权服务器上。
    2. 用户选择是否授权客户端访问其资源。
    3. 如果用户授权客户端,授权服务器将生成一个授权码。
    4. 授权服务器将用户重定向回客户端,并将授权码作为查询参数发送到客户端重定向URI。
  2. 客户端使用授权码请求访问令牌,使用以下五个步骤:

    1. 客户端向授权服务器发送包括授权码在内的POST请求。
    2. 授权服务器验证授权码,如果有效,响应包含访问令牌和可选的刷新令牌。
    3. 客户端使用访问令牌请求受保护资源。
    4. 资源服务器验证访问令牌,如果有效,响应可能包含所请求的受保护资源。
    5. 如果访问令牌过期,客户端可以使用刷新令牌向授权服务器请求新的访问令牌。
OAuth 2.0 的访问令牌

访问令牌是OAuth 2.0中的凭证,它由授权服务器签发并用于访问受保护资源。访问令牌是短期有效的(通常是1个小时),并且可以在每次请求资源时发送。

访问令牌的类型可以是“Bearer”或“MAC”,这取决于服务提供商的配置。

下面是一个简单的HTTP请求,演示如何使用Bearer令牌:

GET /api/some-resource HTTP/1.1
Host: example.com
Authorization: Bearer access_token
OAuth 2.0 的实现

OAuth 2.0的实现通常需要使用OAuth 2.0库或框架。下面是一些常见的OAuth框架:

结论

OAuth 2.0面向Web和移动应用程序提供了一种强大的授权机制。在使用OAuth时,请确定要理解授权流程,并使用受信任的第三方库和框架来帮助您实现它。