daily commit
This commit is contained in:
25
jwt/jwt.md
25
jwt/jwt.md
@@ -1,4 +1,25 @@
|
||||
# JWT
|
||||
* ## jwt简介
|
||||
> jwt是一个开源标准。jwt定义了一个紧凑且自包含的方式安全的在多方之间通过json字符串传递信息。由于传递的信息会被签名,故而信息是可验证和信任的。
|
||||
*
|
||||
> 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只能在同一父域名的不同子域名下共享
|
||||
Reference in New Issue
Block a user