登录校验-JWT令牌-介绍

JWT

简称

  • 全称:JSON Web Token (JWT),(JSON Web Tokens - jwt.io
  • 定义了一种简洁的、包含式的格式、用于在通信双方以JSON数据格式安全传输信息。由于数字签名的存在,这些信息是可靠的。

组成

  • 头部(Header):JWT的头部通常由两部分组成:令牌的类型(即JWT)和所使用的签名算法(如HMAC SHA256或RSA)。头部会被Base64编码,但不会进行加密。例如:{"alg":"HS256","type":"JWT"}

    • Base64编码是一种基于64个可打印字符(A-Z,a-z,0-9,+,/)来表示二进制数据的编码方式

  • 载荷(Payload):载荷是JWT的第二部分,包含了一些声明(claims),用于描述关于用户和其他数据的信息。JWT的载荷可以包含预定义的声明(如iss(签发者)、exp(过期时间)等)和自定义的声明。载荷也会被Base64编码,但不会进行加密。

  • 签名(Signature):签名是JWT的第三部分,用于验证JWT的完整性和真实性。签名是通过将头部、载荷和一个密钥进行加密生成的。服务器在接收到JWT后,使用相同的密钥和签名算法来验证签名,以确保JWT没有被篡改。

具体实例

```

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c


```

在这个实例中,JWT令牌由三部分组成,每个部分之间使用点号(.)分隔

1. 头部(Header):`eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9`,它包含了令牌的类型("alg")和使用的加密算法("typ")。

2. 载荷(Payload):`eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ`,它包含了一些声明(claims),例如用户ID、用户名和令牌的发放时间。

3. 签名(Signature):`SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c`,它由头部、载荷、秘钥和加密算法生成,用于验证令牌的真实性。

JWT令牌通常用于身份验证和授权,可以在客户端和服务器之间进行安全的数据传输。

使用场景

  • 登录认证
    • 我们从浏览器发送请求,请求登录操作,会访问登录的接口,如果登录成功,服务端需要生成一个JWT令牌(生成令牌),然后将生成的JWT令牌返回给前端,前端将JWT令牌存储起来,然后在后续的每一次请求中都会将JWt令牌携带到服务端,服务端进行统一拦截,进行判断(校验令牌)。

猜你喜欢

转载自blog.csdn.net/weixin_64939936/article/details/132503290