JWT入门
1.JWT是什么
JWT(json web Tokens)简称jwt
JSON Web Token简称JWT,用于对应用程序上用户进行身份验证的标记。使用 JWTS 之后不需要保存用户的 cookie 或其他session数据,同时可保证应用程序的安全。
用于跨域身份验证解决方案
1.1组成部分
JWT是经过加密处理与校验处理的字符串,形式为:A.B.C
- –A由JWT头部信息header加密得到
- –B由JWT用到的身份验证信息JSON数据加密得到
- –C由A和B加密得到,是校验部分
- –官方测试网站: https://jwt.io/
1.2JWT的使用场景和优势
- 身份验证和授权:JWT可以用于在用户登录后生成一个令牌(token),并在后续请求中携带该令牌以证明用户身份。
- 跨域认证:由于JWT是一种基于JSON的标准,它可以轻松地在不同的域之间传递信息。
- 安全性:通过数字签名,JWT可以防止篡改,确保数据的安全性和完整性。
- 无状态:服务器不需要保存用户的会话状态,减轻服务器负担,提高可扩展性。
- 灵活性:JWT可以轻松地添加到HTTP请求头中,适用于[RESTful API](https://www.baidu.com/s?tn=25017023_19_pg&ch=2&usm=1&wd=RESTful API&ie=utf-8&rsv_pq=dcbf04c20004cd21&oq=jwt是什么&rsv_t=796f9dzzvFOThIW%2BKxXS3dIVVKomRt07Yob7ZzYXPFAXBF1Xt0HcWL8CHVt1OnnqrUIiG3U&sa=re_dqa_generate)和其他基于HTTP的服务。
1.3jwt流程图
(此图来源于网上)
2.jwt的代码实现
2.1来自于官网的直观演示
红色的就是代表header(头部)
1.这里声明的类型为jwt
2.声明了加密算法
紫色部分代表的就是你实际的数据playload(载荷)
这里要将其进行base64加密
蓝色部分代表的是signature(签证信息)
2.2代码实现
public void testCreateToken() {
//生成token
//1、准备数据
Map map = new HashMap();
map.put("id",1);
map.put("mobile","13800138000");
//2、使用JWT的工具类生成token
long now = System.currentTimeMillis();
String token = Jwts.builder()
.signWith(SignatureAlgorithm.HS512, "itcast") //设置秘钥