美文网首页
白话JWT原理,JSON Web Token

白话JWT原理,JSON Web Token

作者: 蒋小目 | 来源:发表于2020-04-26 20:47 被阅读0次

有啥用?

  • 客户端的请求都是带身份证的,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

客户端与服务器交互流程

sequenceDiagram
客户端 ->> 服务器: 发送登录请求
服务器 -->>客户端: 通过验证返回Token
客户端 ->> 服务器: Header里带Token信息
服务器 -->>客户端: 验证通过返回数据

JWT官网地址

相关文章

网友评论

      本文标题:白话JWT原理,JSON Web Token

      本文链接:https://www.haomeiwen.com/subject/otfswhtx.html