目录
好文分享
session、cookie、token 详解_token session cookie-CSDN博客
一 JWT简单介绍
概念:是一种开放标准,用于在各方之间安全传输结构化JSON数据。通常用于省份验证和授权,通过数字签名确保数据的完整性和可信性,具有无状态,轻量级,跨域支持等特点。
JWT(JSON Web Token)在当今企业中被广泛采用,尤其是在无状态认证和分布式系统场景中。其流行主要得益于其轻量级、跨平台兼容性和自包含特性。
通过数字签名的方式,以 JSON
对象为载体,在不同的服务器终端之间安全传输的信息。
作用:
最常见的场景就是授权认证,一旦用户认证,后续每个请求都将包含JWT,系统在么此处理用户请求之前,都先进行JWT安全校验,通过之后才继续进行处理
JWT就像是一个令牌,当我们去到一个公司,这个公司先会校验你的身份,校验成功就会给你发一个身份卡,以后再见面时,看见你的身份卡就知道你是不是公司的人,就不需要对你的省份继续宁身份认证。你有这个JWT的信息,服务器直接就可以知道你,不用反复查询数据库获取,并且一旦篡改立马就可以发现。
二、JWT 的组成结构
JWT 由三部分组成,格式为 Header.Payload.Signature
,各部分通过 .
分隔,均采用 Base64Url 编码。
1 Header(头部)
作用:声明令牌类型(typ)和签名算法(alg)
实例:
{
"alg": "HS256", // 签名算法(如HMAC、RSA等)
"typ": "JWT" // 固定值
}
2 Payload(载荷)
作用:携带信息
实例:
{
"sub": "user123", // 主题(用户ID)
"name": "Alice",
"exp": 1717040000 // 过期时间戳
}
3 Signature(签名)
作用:验证令牌是否被篡改,由前两部分编码后的字符串通过指定算法生成。
生成公式:
HMACSHA256(
base64UrlEncode(header) + "." + base64UrlEncode(payload),
secret_key
)
三、JWT 工作原理
生成令牌
用户登录成功后,服务器生成 JWT,包含用户信息和签名,返回给客户端。
传递令牌
客户端将 JWT 存储在
Cookie
或Authorization
请求头中,随后续请求发送给服务器。
验证令牌
服务器收到 JWT 后:
解码 Header 和 Payload:获取算法和用户数据。
验证签名:使用相同算法和密钥重新计算签名,比对是否一致。
检查有效性:如过期时间、签发者等是否符合要求。