什么是JWT?
Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一 种基于 JSON 的开放标准((RFC 7519)定义了一种简洁的,自包含的方法用于 通信双方之间以 JSON 对象的形式安全的传递信息)。因为数字签名的存在,这些 信息是可信的,JWT 可以使用 HMAC 算法或者是 RSA 的公私秘钥对进行签名。
基于 token 的鉴权机制
基于 token 的鉴权机制类似于HTTP 协议也是无状态的,它不需要在服务端 去保留用户的认证信息或者会话信息。这就意味着基于 token 认证机制的应用 不需要去考虑用户在哪一台服务器登录了,这就为应用的扩展提供了便利。
流程上是这样的:
1. 用户使用账号和密码发出 post 请求
2. 服务器使用私钥创建一个 jwt
3. 服务器返回这个 jwt 给浏览器
4. 浏览器将该 jwt 串在请求头中像服务器发送请求
5. 服务器验证该 jwt
6. 返回响应的资源给浏览器。
JWT优点
1.简洁(Compact): 可以通过 URL,POST 参数或者在 HTTP header 发送,因为数据量小,传输速度也很快
2.自包含(Self-contained):负载中包含了所有用户所需要的信息,避免了多次查询数据库
3.因为 Token 是以 JSON 加密的形式保存在客户端的,所以 JW