java jwt使用 java jwt原理_客户端


一、什么是JWT?

JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息

JWT是什么样子的结构?

JSON Web Token说到底也是一个token字符串,它由三部分组成,头部、载荷与签名。

如下图 红色的为Header,指定token类型与签名类型,紫色的为载荷(playload),存储用户id等关键信息,最后蓝色的为签名,保证整个信息的完整性,可靠性.

头部(Header)

header(头部),头部信息主要包括(参数的类型--JWT,签名的算法--HS256)

载荷(playload)

poyload(负荷),负荷基本就是自己想要存放的信息

签名(Signature)

sign(签名),签名的作用就是为了防止恶意篡改数据

如下图 Header,指定token类型与签名类型载荷(playload),存储用户id等关键信息,最后为签名,保证整个信息的完整性,可靠性.


java jwt使用 java jwt原理_服务端_02


认证过程

下面我们从一个实例来看如何运用JWT机制实现认证:

先上个官方文档的图


java jwt使用 java jwt原理_客户端_03


流程如下:

客户端使用账户密码请求登录接口

登录成功后服务器使用签名密钥生成JWT ,然后返回JWT给客户端

客户端再次向服务端请求其他接口时带上JWT

服务端接收到JWT后验证签名的有效性.对客户端做出相应的响应

对Token认证的五点认识

对Token认证机制有5点直接注意的地方:

  • 一个Token就是一些信息的集合;
  • 在Token中包含足够多的信息,以便在后续请求中减少查询数据库的几率;
  • 服务端需要对cookie和HTTP Authrorization Header进行Token信息的检查;
  • 基于上一点,你可以用一套token认证代码来面对浏览器类客户端和非浏览器类客户端;
  • 因为token是被签名的,所以我们可以认为一个可以解码认证通过的token是由我们系统发放的,其中带的信息是合法有效的;