一:JWT 是什么
JSON WEB TOKEN
一个json格式的web令牌
JWT本身是一套标准,定义了一系列的规范
在Java中的实现有很多:
auth0.JWT:Github 链接
jwtk.JJWT:Github链接
当然还有很多,但都是大同小异
二:食用说明
本文主要讲解需要了解的名词,下一篇将会是实现
请务必了解一下这些东西:
- Token的本质
- 公钥 私钥
- 对称加密 非对称加密
- JWT标准
- JWS JWE
- 常用算法
三:介绍
1.Token的本质
到底什么是Token:我们先看一下来自百度百科的定义:
Token其实就是令牌,这个令牌的功能很多,验证身份(该请求是否可以被允许)、验证权限(该请求是否有资格)、验证时间(该请求是否在合法时间内)等诸多操作。
但是请注意,我在图中打了个红圈,他是临时的,并不是永久的,也就是说,存在过期时间!我们也可以想一下,在登陆后,并不意味着可以永久登陆,只是维持一段时间,之后还要登陆。而且有很多地方的Token是一次性的也就是说,使用后就不能再次使用了。
这就是Token,代表着身份。
2. 公钥与私钥
其实公钥与私钥我给大家一个链接,这篇文章说的非常明白,而且浅显易懂
3. 对称加密和非对称加密
这里的对称和非对称指的是加密需要的信息和解密需要的信息是否为同一个。
对称加密:
对称加密本身速度非常快,需要一个密钥,用来加密和解密。
如果使用对称加密进行文本传输,那么密钥的保存也十分重要!
常见的对称加密算法:
- DES
- 3DES
- TDEA
- Blowflsh
- RC2
- RC4
- RC5
- IDEA
- SKIPJACK
非对称加密:
算法复杂度比对称加密有显著提高,同时安全性也增加不少,详情请见‘2 公钥与私钥’ 里的链接。
4:JWT标准:
世界上总会有为人类发展做出贡献的一小撮人,这帮人闲着无聊就会制定五花八门的标准,但是这些标准对学习、开发等活动都有很大的贡献。
JWT标准是一套表述json web token的规范。
都有什么呢,你可以尝试百度,然后看十分钟一个关于广告公司(JWT)的介绍再去找,或者直接戳:https://jwt.io/introduction/ (推荐右键翻译)
什么,没看懂,没关系,这里还有一篇比较详细的汉语介绍,https://www.cnblogs.com/zaixiuxing/p/6005968.html
看完这两个文章,你会发现一个新名词:JWS,请往下看
5: JWS
JWS 还有一个兄弟:JWE,他们和JWT有啥关系呢,:https://www.jianshu.com/p/50ade6f2e4fd
6:常用算法
常用的算法就那么几个,有的需要公钥私钥,有的需要一个密钥
在JWT主页中,已经有介绍了,而对于我研究过的算法有如下三个:HMAC256\RSA256\ECDSA256,大家感兴趣的话可以仔细研究一下
这些算法干了个啥事呢,用来加密和验证,这部分我会在atuh0.JWT解析的时候说
四:JWT的基本使用流程:
1.生成JWT 头
2.生成JWT负载
3.base64算法处理后的头和负载 的链接,再加密
4.发送给客户端
5.携带Token操作的时候,进行认证时间
6.认证是否为自己所发、使用算法是否相同等等等等