JWT笔记
目录
- 1.JWT简介
- 2.JWT作用
- 3.传统Session
- 4.JWT的结构
- 5.JWT的请求流程
- 6.SpringBoot集成JWT
1.JWT简介
JWT(JSON web token),也就是通过JSON形式作为Web应用中的令牌,用于在各方之间安全地将信息作为JSON对象传输,在数据传输过程中可以完成数据加密、签名等相关处理。
2.JWT作用
- 授权:用户登录,后续请求包括JWT,从而允许用户访问该令牌允许的路由、服务和资源。
- 信息交换:JWT是各方之间安全地传输信息的好方法,因为可以对JWT进行签名(例如:使用公钥/私钥)。由于签名是使用标头和有效负载计算的,因此可以验证用户内容。
3.传统Session
我们知道,http协议本身是一种无状态的协议,而这就意味着如果用户向我们的应用提供了用户名和密码来进行用户认证,那么下一次请求时,用户还要再一次进行用户认证才行,因为根据http协议,我们并不能知道是哪个用户发出的请求,所以为了让我们的应用能识别是哪个用户发出的请求,我们只能在服务器存储一份用户登录的信息,这份登录信息会在响应时传递给浏览器,告诉其保存为cookie,以便下次请求时发送给我们的应用,这样我们的应用就能识别请求来自哪个用户了,这就是传统的基于session认证。
4.JWT的结构
JWT是由一下三段信息构成的:
- Header头部(包含签名或加密算法的类型)
- Payload载荷(存放有效信息)
- Signature(签名/签证)
将这三段信息文本用“.”连接一起就构成完成的JWT字符串,也是就我们需要的Token,如下所示:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0aW1lU3RhbXAiOjE2MzkwNDc1NTMxNjksInVzZXJSb2xlIjoiUk9MRV9BRE1JTiIsInVzZXJJZCI6ImFkbWluIn0.UFQLvaiQ1AThx9Fa4SRqNg-b9HPJ9y1TlgQB4-F3pi0
5.JWT的请求流程
-
- 客户端发起登录请求,传入账号密码;
-
- 服务端使用私钥创建一个Token;
-
- 服务器返回Token给客户端;
-
- 客户端向服务端发送请求,在请求头中该Token;
-
- 服务器验证该Token
- 6.返回结果。
6.SpringBoot集成JWT
<dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.10.3</version>
</dependency>
- 如何使用