JWT工作原理

1.客户端通过Web表单将正确的用户名和密码发送到服务端的接口。这一过程一般是POST请求。建议的方式是通过SSL加密的传输(https协议),从而避免敏感信息被嗅探。
2.服务端核对用户名和密码成功后,将用户的id等其他信息作为JWT Payload(负载),将其与头部分别进行Base64编码拼接后签名,形成一个JWT。形成的JWT就是一个形同lll.zzz.xxx的字符串,并设置有效时间。
lll 解析成HEADER 是一个json对象,描述jwt的元数据,使用什么算法进行加密,是什么类型{"alg": "HS256“, "typ": "JWT"}
zzz 解析成PAYLOAD 是一个json对象 用来存放实际需要传递的数据(比如:id,email,password等等包括过期时间exp和何时发送的ilat)
xxx 是对前两部分签名,防止数据篡改,需要指定的密钥,这个密钥只有服务器才知道不能泄漏给用户
3.服务端将JWT字符串作为登录成功的返回结果返回给客户端。
4.客户端将返回的JWT以cookie的形式保存在浏览器上,并设置cookie的有效时间(建议客户端cookie和服务端JWT的有效时间设置为一致),用户登出时客户端需删除cookie。
5.客户端在每次请求时将JWT放入HTTP Header中的Authorization位。(解决XSS和XSRF问题支持跨域)
6.服务端对收到的JWT进行解密和校验,如检查签名是否正确、Token是否过期、Token的接收方是否是自己等。
7.验证通过后服务端使用JWT中包含的用户信息进行其他逻辑操作,返回相应结果,否则返回401。