概念
JWT 是⼀个开放标准,它定义了⼀种⽤于简洁,⾃包含的⽤于通信双⽅之间以 JSON 对象的形式安全传递信息的⽅法。 可以使⽤ HMAC 算法或者是 RSA 的公钥密钥对进⾏签名。 优点:- ⽣产的token可以包含基本信息,⽐如id、⽤户昵称、头像等信息,避免再次查库
- 存储在客户端,不占⽤服务端的内存资源
缺点:
- token是经过base64编码,所以可以解码,因此token加密前的对象不应该包含敏感信息,如⽤户权限,密码等
- 如果没有服务端存储,则不能做登录失效处理,除⾮服务端改秘钥
组成
header+payload+signature 头部+负载+签名 头部:主要是描述签名算法 负载:主要描述是加密对象的信息,如⽤户的id等,也可以加些规范⾥⾯的东⻄,如iss签发者,exp 过期时间,sub ⾯向的⽤户 签名:主要是把前⾯两部分进⾏加密,防⽌别⼈拿到token进⾏base解密后篡改token 需注意,正因为签名的存在,保证了JWT的不可篡改性,JWT默认不加密,因此一般不存放私密信息。问题与趋势
1、JWT默认不加密,但可以加密。生成原始令牌后,可以使用改令牌再次对其进行加密。
2、当JWT未加密方法是,一些私密数据无法通过JWT传输。
3、JWT不仅可用于认证,还可用于信息交换。善用JWT有助于减少服务器请求数据库的次数。
4、JWT的最大缺点是服务器不保存会话状态,所以在使用期间不可能取消令牌或更改令牌的权限。也就是说,一旦JWT签发,在有效期内将会一直有效。
5、JWT本身包含认证信息,因此一旦信息泄露,任何人都可以获得令牌的所有权限。为了减少盗用,JWT的有效期不宜设置太长。对于某些重要操作,用户在使用时应该每次都进行进行身份验证。
6、为了减少盗用和窃取,JWT不建议使用HTTP协议来传输代码,而是使用加密的HTTPS协议进行传输。
参考文章:https://www.jianshu.com/p/d1644e281250
标签:令牌,加密,JWT,信息,token,签名,相关 From: https://www.cnblogs.com/Explosion556/p/17723334.html