JSON Web Token学习笔记

1、什么是JSON Web Token?

一、为何使用JSON Web Token

JSON Web Token是cookie session机制的一种替代方案。
通常咱们用户认证的流程是:算法

(1)用户将用户名和密码发送给服务器
(2)服务器验证并经过后,将信息存放在session
(3)返回给客户端一个sessionId
(4)客户端将sessionId保存在cookie
(5)客户端后续的请求,都会将cookie一并发给服务器,里面就包含了sessionId
(6)客户端经过sessionId识别用户数据库

可是在跨域登录状况下(跨域即跨域名登录,也就是可能会有好几个不一样的服务器),多个服务器须要共享session。这种状况下使用JSON Web Token就会有更加方便。json

二、JSON Web Token的原理

JSON Web Token其实是一个JSON对象,使用流程为:

(1)用户将用户名和密码发送给服务器
(2)服务器将验证并经过之后,生成JSON Web Token,并发送给客户端
(3)客户端将其保存在local storage 或本地数据库
(4)下次客户端再次发起请求,将 Token 附加到 header 中
(5)服务器彻底经过JSON Web Token来识别用户跨域

这里值得注意的是,为了保证安全性,在第(2)步中,服务器会经过加密算法将Token加密,也就是说客户端保存的是个加密的Token,到第(5)步服务器对其进行解密。安全

三、JSON Web Token的数据结构

Token通常为三部分组成:Header.Payload.Signature
(1)Header(头部):通常包含签名的算法和令牌的属性
(2)Payload(负载):实际须要传递的数据(通常不加密,所以不要把重要信息放在里面
(3)Signature(签名):Signature 部分是对前两部分的签名,防止数据篡改。格式通常以下(secret为密钥,只有服务器本身知道):服务器

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

四、特色

(1)使用 json 做为数据传输,有普遍的通用型,而且体积小,便于传输
(2)不须要在服务器端保存相关信息,彻底经过Token来认证
(3)jwt 载荷部分能够存储业务相关的信息(非敏感的),例如用户信息、角色等,所以也能够用于交换信息。cookie

相关文章
相关标签/搜索