跳到主要内容

认识

2025年01月07日
柏拉文
越努力,越幸运

一、认识


OAuth 2.0(开放授权 2.0 版本)是一种授权框架,旨在允许第三方应用在不暴露用户凭据(如用户名和密码)的情况下,代表用户访问受保护的资源。OAuth 2.0 定义了一组允许客户端应用在用户授权下访问某些资源的标准协议,它是一种广泛使用的授权机制,广泛应用于 Web 应用、移动应用和 API 服务中。

OAuth 2.0 主要解决了 授权 的问题,而不是身份验证。简单来说,OAuth 2.0 允许用户授权第三方应用访问某些资源,但不要求提供用户名和密码,而是通过 访问令牌(Access Token 来控制权限。

二、工作流


1. 客户端请求授权: 客户端(比如 Web 应用)将用户重定向到授权服务器的授权端点。请求包含以下参数:client_id:客户端 ID, redirect_uri: 用户认证后重定向的 URI, scope:请求的权限范围,response_type=code:指示请求授权码。

  1. 用户授权: 用户在授权服务器上登录并授权客户端访问其资源。授权服务器生成一个 授权码Authorization Code),并将用户重定向回客户端提供的 redirect_uri

  2. 客户端使用授权码交换访问令牌: 客户端收到授权码后,向授权服务器的令牌端点发送 POST 请求,包含以下参数:client_idclient_secret:客户端的认证信息, code:前一步获得的授权码, redirect_uri:客户端的重定向 URI

  3. 授权服务器返回访问令牌: 授权服务器验证请求并返回 Access Token(访问令牌)和 Refresh Token(如果申请了刷新令牌)。

  4. 客户端使用访问令牌访问资源: 客户端可以使用 Access Token 来访问资源服务器上的受保护资源。资源服务器通过验证 Access Token 来决定是否允许访问。

  5. 刷新令牌(可选): 当 Access Token 过期时,客户端可以使用 Refresh Token 向授权服务器请求新的 Access Token,而不需要用户重新授权。