白话JWT原理,JSON Web Token

有啥用?

  • 客户端的请求都是带身份证的,JWT验证不通过的服务器拒绝处理
  • 发送服务器的数据进行加密,你拦截了也看不到里面是啥。

比以前存Cookie好的地方

  • 防CSRF (主要是伪造请求,带上Cookie )
  • 适合移动应用,不用将Cookie存在浏览器上造成兼容问题
  • 服务器端无状态,不需要存储Session在服务器端
  • 跨域资源共享(CORS)不会成为问题,因为它不使用cookie

组成部分

JSON Web Token三部分组成,这些部分由点(.)分隔,分别是:

  • 标头
  • 有效载荷
  • 签名

你加密完的数据长下面这个样子。

xxxxx.yyyyy.zzzzz

标头(header)

标头通常由两部分组成:令牌的类型(即JWT)和所使用的签名算法,例如HMAC SHA256或RSA。

{
  "alg": "HS256",
  "typ": "JWT"
}

然后,此JSON被Base64Url编码以形成JWT的第一部分。

参数

一般是用户ID、Token过期的时间等等,自己定义。

{
  "sub": "1234567890",
  "name": "John Doe",
  "admin": true
}

然后,对有参数进行Base64Url编码,以形成JSON Web Token的第二部分。

签名

最后签名部分,通过前面两部分内容及标头中指定的算法,并对其进行签名。

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret)

完成后会看到下面的样子

eyJhbGci0iJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIi0iIxMjMONTY30DkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaXNTb2NpYWwi0nRydWV9.4pcPyMD09o1PSyXnrXCjTwXyr4BsezdI1AVTmud2fU4

客户端与服务器交互流程

客户端 服务器 发送登录请求 通过验证返回Token 以后Header里带Token信息 Token验证通过,返回数据 客户端 服务器

JWT官网地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值