java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > JWT概述及Token刷新机制

JWT概述以及Token刷新机制详解

作者:透明果冻

这篇文章主要介绍了JWT概述以及Token刷新机制,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一、概述

什么是JWT,简单的说就是一个存储在请求头中的字符串,包含了用户信息和校验信息。较为正式一点的来说, JWT(JSON Web Token)是一种无状态的身份认证机制,通常用于前后端分离项目。

它具有以下特点:

二、JWT组成

JWT由三部分组成,各部分用.隔开。header.payload.signature

三、JWT认证

用户输入账号密码,经过服务端校验成功后,就会生成一个JWT,首先选择其加密算法类型,如 HS256,将这一部分内容放入头部中,然后在负载中放入用户id,过期时间等信息;然后会使用一个 密钥 对前两部分进行 HMAC-SHA256 签名,防止篡改。然后将JWT返回给客户端,客户端将其存储在本地缓存中。

以后的每次请求中,都带上该JWT。服务端从请求头请求头中获取该JWT,然后使用相同的密钥对其进行验证,若验证成功则获取负载中的信息,对其中的信息进行验证,一般是查询db,验证用户id的有效性。然后才对该请求进行放行。

四、与传统session相比较

JWT与传统session的区别:

五、对于token失效的解决策略

我们之前讨论的 JWT 认证 基本流程是:

  1. 用户登录后,服务器生成一个 Access Token(通常较短有效期,如 15 分钟),并返回给客户端。
  2. 客户端每次请求时都会携带 Access Token,服务器通过验证 Access Token 来确认用户身份。

但存在一定问题:

所以引入 Refresh Token机制来解决上述问题:

Refresh Token 是一个长期有效的 Token,一般有效期7-30天,它的作用是用来刷新已过期的 Access Token。

工作流程

用户登录

Access Token 过期

Token 刷新失败

注意

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文