什么是JWT
JWT(json web token) 要说JWT是什么,先谈谈没有JWT的时候是怎么进行身份验证的呢?
通常会用到session
- 客户端登陆服务器填写用户名密码
- 服务器验证身份保存一个session并返回sessionid给客户端
- 客户端把sessionid存在cookie中
- 后续每次请求都会带上这个sessionid
- 服务器验证sessionid就会知道这个是之前登录的用户
session通常是保存在内存中,这种验证模式在单服务器中是没有问题的,但是在服务器集群就会出问题,服务器分流可能导致用户下次登陆不一定在同一台服务器上
那么JWT是怎么解决这个问题的呢
JWT把用户信息(也称作令牌)直接写在客户端,直接由客户端告诉服务器自己的身份。
那你可能会说这怎么行,太容易造假了,说自己是管理员就是管理员吗?
为了防止造假,保存在客户端的令牌是经过服务器私钥加密签名处理的,当用户使用JWT访问服务时,再通过验签来判断信息是否被修改过。
可以有两种验证方式:
- 服务端拿到header和payload的信息,通过header里的加密算法拿着我们自己的私钥对payload生成一个签名对比JWT传过来的签名,如果签名一致,说明payload的信息没有被修改。
- 我们利用公钥对签名解密,解密出来的header和payload的信息是否和传过来的一致。
下一章介绍下.Net怎么使用JWT
标签:什么,JWT,sessionid,签名,服务器,payload,客户端 From: https://www.cnblogs.com/zebrafish/p/17134292.html