Access Token(访问令牌)

  1. 定义:Access Token 是一种短期有效的令牌,用于授权用户访问特定的资源或 API。

  2. 有效期:通常具有较短的有效期(如几分钟到几小时),以提高安全性。

  3. 用途:在用户请求访问受保护资源时,Access Token 会被发送到服务器进行验证。服务器根据这个令牌来判断用户是否有权限访问所请求的资源。

  4. 格式:Access Token 可以是 JWT(JSON Web Token)格式,也可以是其他格式,具体取决于实现。

  5. 安全性:由于其有效期短,Access Token 被盗用后所造成的损失相对较小,因此通常建议使用 HTTPS 进行传输,以防止中间人攻击。

Refresh Token(刷新令牌)

  1. 定义:Refresh Token 是一种用于获取新的 Access Token 的令牌。通常在用户登录时生成,并在 Access Token 过期时使用。

  2. 有效期:Refresh Token 的有效期通常较长,可以是几天、几周甚至更长,具体取决于应用的安全策略。

  3. 用途:当 Access Token 过期时,客户端可以使用 Refresh Token 请求新的 Access Token,而无需用户重新登录。这种机制提高了用户体验,因为用户不需要频繁输入凭证。

  4. 安全性:由于 Refresh Token 的有效期较长,必须妥善保管,避免被盗用。一般建议将其存储在安全的地方(如服务器端或安全的存储机制中)。

刷新和续期的流程

  1. 获取 Token

    • 用户通过登录获取 Access Token 和 Refresh Token(令牌的过期时间expires_in)。
  2. 使用 Access Token

    • 用户在访问受保护资源时使用 Access Token。
  3. Access Token 过期

    • 当 Access Token 过期时,用户的请求将返回 401 Unauthorized 错误。
  4. 使用 Refresh Token 刷新 Access Token

    • 客户端捕获到 401 错误后,使用 Refresh Token 向服务器请求新的 Access Token。
    • 服务器验证 Refresh Token 的有效性,并返回新的 Access Token(可选地返回新的 Refresh Token)。
  5. 更新 Refresh Token

    • 如果服务器返回了新的 Refresh Token,客户端需要替换旧的 Refresh Token。
  6. Refresh Token 过期

    • 如果 Refresh Token 过期,用户需要重新登录以获取新的 Access Token 和 Refresh Token。