JWT|大纲


具体分析|笔记

JWT|定义

JSON Web Token(JSON Web 令牌)是一种跨域(域名)验证身份的方案。JWT 不加密传输的数据,但能够通过数字签名来验证数据未被篡改。
JWT 分为三部分,头部(Header),声明(Claims),签名(Signature),三个部分以英文句号.隔开。 JWT 的内容以 Base64URL 进行了编码。
但是签名部分需要前面两部分的整合以及密钥才可解密。

JWT|例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
头部(Header
{
"alg":"HS256",
"typ":"JWT"
}
/*alg
是说明这个JWT的签名使用的算法的参数,常见值用as256(默认),s512等,也可以为None。Hs256表示HMAC SHA256。
typ
说明这个token的类型为JWT*/
声明(Claims
{
"exp": 1416471934,
"user_name": "user",
"scope": [
"read",
"write"
],
"authorities": [
"ROLE_ADMIN",
"ROLE_USER"
],
"jti": "9bc92a44-0b1a-4c5e-be70-da52075b9a84",
"client_id": "my-client-with-secret"
}

声明(Claims
{
"exp": 1416471934,
"user_name": "user",
"scope": [
"read",
"write"
],
"authorities": [
"ROLE_ADMIN",
"ROLE_USER"
],
"jti": "9bc92a44-0b1a-4c5e-be70-da52075b9a84",
"client_id": "my-client-with-secret"
}

JWT|杂七杂八

1、关于JWT的知识点

2、签名不对,那就只可更改头部内容为none。(前提:对方服务器无需验证签名)
3、JWT可能也会导致sql注入,原因是头部的kid值可能会带入数据库查询。
使用在线jwt解码
https://jwt.io/