2.0 KiB
2.0 KiB
JWT
-
jwt简介
jwt是一个开源标准。jwt定义了一个紧凑且自包含的方式安全的在多方之间通过json字符串传递信息。由于传递的信息会被签名,故而信息是可验证和信任的。
jwt只能对payload中的信息进行验证,并不会对信息进行加密。故而jwt中不应该包含敏感信息。jwt只是对header和payload的信息进行签名,保证该信息的来源方式可信的。 -
jwt用途
- jwt通常用来进行认证操作
- jwt还可以用作信息交换,由于传递的信息会被签名,故而通过jwt来传输信息是安全的
-
jwt结构
-
Header
- 对于header部分的信息,会进行base64url编码
-
Payload
- 对于payload部分的数据,也会进行base64url形式的编码
-
Signature
- 通常,在header中记录了加密算法,对base64url编码后的header和payload用指定算法和服务端私钥技能型签名后,会生成签名部分
- 将签名部分和header、payload通过.分隔并且连接,然后就可以生成jwt
-
-
jwt认证流程
- 首先,客户端第一次向服务端发送登录请求,服务端根据客户端发送的用户名、密码等登录信息在数据库中查找信息并验证,如果登录成功,会在服务端生成一个jwt
- 服务端会将生成的jwt返回给客户端,jwt中可以记录一些不敏感信息
- 而后每次客户端向服务端发送请求时,都会携带jwt,服务端在接收到jwt后会对jwt中的信息进行验证
-
jwt相对于session存储用户信息的优势
- jwt的数据存储在客户端中,故而其并不会像session一样占用服务端内存,能够有效减轻服务端的内存压力
- 将一些非敏感信息存储在jwt中,可以避免服务端频繁的在数据库中查询信息
- jwt是以json格式存储信息的,故而jwt可以跨语言
- jwt可以解决跨域问题,不像cookie只能在同一父域名的不同子域名下共享