JWT基础概念详解(jwt中的jti)

  本篇文章为你整理了JWT基础概念详解(jwt中的jti)的详细内容,包含有jwt包含哪几部分 jwt中的jti jwt组成部分 jwt底层原理 JWT基础概念详解,希望能帮助你了解 JWT基础概念详解。

  之前我们文章讲过分布式session如何存储,其中就讲到过Token、JWT。首先,我们来回顾一下使用Token进行身份认证。

  客户端发送登录请求到服务器

  服务器在用户登录成功之后会生成一个token,此时这个token可能会被存储到数据库、Redis等,实现可以共享,服务端会把生成的token返回给客户端

  客户端也会存储这个token,每次请求需要携带这个token即可。

  JWT是token的另一种方式,又有很多不同点。JWT全称是JSON Web Token,它的本质是一个字符串,它里面包含数据和签名,接下来我们看看JWT是如何进行身份认证的。

  客户端发送登录请求到服务器

  服务器在用户登录成功之后签发一个JWT Token,之后会把这个token直接返回给客户端,此时服务器端是不存储任何用户信息的。

  客户端存储JWT Token,每次请求时携带这个token

  服务端在每次请求前,检查传过来的token,判断签名、过期时间,验证通过后可以解析出token里面包含的用户信息。

  
JWT主要由3部分组成,分别是Header、payload、signature。下面我们具体讲讲每部分的作用。

  Header

  Header主要存储token类型和签名算法相关信息,例如

  

{

 

   "alg": "HS256",

   "typ": "JWT"

  

 

  然后会把这个json字符串使用Base64进行编码,作为JWT的Header部分。

  Payload

  Payload主要是存储信息的,里面可以存储业务数据或者用户信息, JWT有以下7个默认字段可以选用。

  iss: Issure JWT签发方

  iat: Issued at time JWT签发时间

  sub: Subject JWT主题

  aud: Audience JWT接收方

  exp: Expiration time JWT过期时间

  nbf: Not before time JWT生效时间

  jti: JWT ID

  下面我们举个例子

  

{

 

   "sub": "123456",

   "username": "admin"

  

 

  上面的json字符串会使用Base64进行编码,作为JWT的Payload部分,Payload部分默认是不加密的,所以一定不要把隐私信息放在Payload当中。

  Signature

  Signature是对上面两部分的数据的签名,对上面的Header和Payload数据,通过指定的算法生成Hash,防止数据被篡改。下面是签名的计算公式

  HMACSHA256(base64UrkEncode(header) + "." + base64UrlEncode(payload), secret)

  在计算出签名后,将上述的Header、Payload和Signature连接成一个字符串,中间使用"."进行分隔,这个就是最终的JWT。

  JWT和Token区别

  
Token需要查询进行验证,JWT不需要,可以直接进行校验。

  Token需要存储在服务器端,JWT在服务器端不存储任何信息。

  Token可以在服务器端进行管理用户,例如登出、禁用,JWT不可以,JWT依赖客户端删除本地的JWT Token。

  以上就是JWT基础概念详解(jwt中的jti)的详细内容,想要了解更多 JWT基础概念详解的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: