一、什么是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等关键信息,最后为签名,保证整个信息的完整性,可靠性.
认证过程
下面我们从一个实例来看如何运用JWT机制实现认证:
先上个官方文档的图
流程如下:
客户端使用账户密码请求登录接口
登录成功后服务器使用签名密钥生成JWT ,然后返回JWT给客户端
客户端再次向服务端请求其他接口时带上JWT
服务端接收到JWT后验证签名的有效性.对客户端做出相应的响应
对Token认证的五点认识
对Token认证机制有5点直接注意的地方:
- 一个Token就是一些信息的集合;
- 在Token中包含足够多的信息,以便在后续请求中减少查询数据库的几率;
- 服务端需要对cookie和HTTP Authrorization Header进行Token信息的检查;
- 基于上一点,你可以用一套token认证代码来面对浏览器类客户端和非浏览器类客户端;
- 因为token是被签名的,所以我们可以认为一个可以解码认证通过的token是由我们系统发放的,其中带的信息是合法有效的;