什么是JWT?
文章目录
-
一、JWT是什么?
-
二、
-
- 1.JWT格式
- 2.JWT构成
-
总结
一、JWT是什么?
Json web token (JWT),
简单的说就是这是一种认证机制,让后台知道请求是来自于受信的客户端。
二、
1.JWT格式
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiIhQCMkJSomIiwiYXVkIjoiIiwiaWF0IjoxNjM5MTIxNjA2LCJuYmYiOjE2MzkxMjE2MDksImV4cCI6MTYzOTIwODAwNiwiZGF0YSI6eyJtZW1iZXJfaWQiOjR9fQ.x5FZPbKzR4_4FQGM3nbT3sVD6EUi0UvKWnAxdYQR_bU
2.JWT构成
从格式上可以看出JWT是由三部分组成的字符串:
header.payload.signature
首先第一部分header,
{
"typ" : "JWT",
"alg" : "HS256"
}
typ 就是 type的意思,例如这里指明是JWT的类型。
alg 是 algorithm 的意思,指代一个加密算法,例上面指代HS256(HMAC-SHA256),这个算法会在生成第三部分signature的时候用到。
其次第二部分payload,
{
"userId": "b08f86af- 35da-48f2-8fab-cef3904660bd"
}
这部分的本质是用户数据,就是JWT的目的是认证用户身份来源,获取用户相关的信息,例如这里就是userId。
最后第三部分signature,
一般就是用一些算法生成一个能够认证身份的字符串,唯一说明的一点是上面hash方法用到了一个secret,这个东西需要 application server 和authentication server
双方都知道,相当于约好了同一把验证的钥匙,最终才好做认证。
总结
1、因为json的通用性,所以JWT是可以进行跨语言支持的。
2、因为有payload部分,所以JWT可以在自身存储一些所必要的非敏感信息。
3、jwt字节占用很小,所以它非常便于传输。
4、它不需要在服务端保存会话信息, 所以它易于应用的扩展。
不应该在jwt的payload部分存放敏感信息,因为该部分是客户端可解密的部分。
保护好secret密钥,该密钥很重要;建议使用https协议。
