OAuth认证流程、Access Token以及Refresh Token简介

OAuth认证流程、Access Token以及Refresh Token简介
最新回答
肆情

2023-03-02 18:29:59

OAuth认证流程

OAuth在“客户端”和“服务端”之间设置了一个授权层(authorization layer),以此将用户与客户端区分开来。OAuth认证流程通常包括以下几个步骤:

  1. 用户授权请求

    用户点击通过第三方(如Google)登录某平台(如平台A)。

    跳转到授权页面,该页面的URL包含client_id(在第三方平台申请的应用ID)和redirect_uri(授权成功后的回调地址)等参数。

  2. 用户授权并获取授权码

    用户在授权页面进行授权操作。

    授权成功后,页面自动跳转到redirect_uri定义的URL,并在URL末尾添加一个code参数(授权码)。

  3. 客户端通过授权码获取访问令牌

    客户端使用上一步获取的code参数,通过POST请求向第三方平台的Token端点(如

    https://oauth2.googleapis.com/token
    )发送请求,以获取访问令牌(Access Token)。

    请求中包含client_id、client_secret(在第三方平台申请时提供的APP Secret)、grant_type(填写为authorization_code)、code以及redirect_uri等参数。

  4. 第三方平台返回访问令牌

    第三方平台验证请求的有效性后,返回访问令牌(Access Token)及相关数据,如令牌的有效期(expires_in)和当前授权用户的UID等。

  5. 客户端使用访问令牌访问资源

    客户端使用获取到的Access Token访问被保护的资源。

    如果Access Token有效,第三方平台返回相应的资源。

  6. 访问令牌过期后的刷新

    当Access Token过期时,客户端可以使用Refresh Token向第三方平台请求新的Access Token,而无需用户再次进行授权操作。

Access Token
  • 定义:Access Token是用于访问被保护的资源的一种凭据,它是一个不透明的字符串。
  • 有效期:一般较短,需要定期刷新以确保客户端能够持续访问资源。
  • 作用:作为客户端访问受保护资源的凭证,确保只有经过授权的客户端才能访问这些资源。
Refresh Token
  • 定义:在OAuth机制中,Refresh Token用于刷新Access Token,它是一个对客户端不透明的字符串。
  • 有效期:一般比Access Token的过期时间长很多,可以设置为永久有效(通过配置参数实现)。
  • 作用

    当Access Token过期或失效时,客户端可以使用Refresh Token向认证服务器请求新的Access Token,而无需用户再次进行授权操作。

    减少了用户频繁登录的次数,提高了用户体验。

Refresh Token认证流程

  1. 客户端通过认证服务器请求认证。
  2. 认证服务器检验客户端认证是否有效,如果有效,返回一个Access Token和一个Refresh Token。
  3. 客户端通过Access Token去请求服务器的资源。
  4. 如果Access Token有效,服务器返回给客户端资源;如果Access Token失效,服务器返回给客户端Token失效的信息。
  5. 客户端通过Refresh Token再次请求获取新的Access Token。

图片展示

通过以上流程和机制,OAuth实现了在客户端和服务端之间安全、有效地传递访问权限,同时保护了用户的账号和密码信息不被泄露。