内容简介:JWT官网:一:JWT简介JWT全名JSON WEB TOKEN,是一个JSON网络令牌,JWT是一个轻便的安全跨平台传输格式,定义了一个紧凑的自包含的方式在不同实体之间安全传输信息(JSON格式)。它是在Web环境下两个实体之间传输数据的一项标准。实际上传输的就是一个字符串。广义上讲JWT是一个标准的名称;狭义上JWT指的就是用来传递的那个token字符串
JWT官网: https://jwt.io/
一:JWT简介
JWT全名JSON WEB TOKEN,是一个JSON网络令牌,JWT是一个轻便的安全跨平台传输格式,定义了一个紧凑的自包含的方式在不同实体之间安全传输信息(JSON格式)。它是在Web环境下两个实体之间传输数据的一项标准。实际上传输的就是一个字符串。广义上讲JWT是一个标准的名称;狭义上JWT指的就是用来传递的那个token字符串
二:JWT作用
由于http协议是无状态的,所以客户端每次访问都是新的请求。这样每次请求都需要验证身份,传统方式是用session+cookie来记录/传输用户信息,而JWT就是更安全方便的方式。它的特点就是简洁,紧凑和自包含,而且不占空间,传输速度快,而且有利于多端分离,接口的交互等等,JWT是一种Token规范,主要面向的还是登录、验证和授权方向,当然也可以用只来传递信息。一般都是存在header里
三:JWT结构
JWT一共分为三个部分:Header(头部) . Payload(负载) . Signature(签名) ;
1:Header(头部)
Header 部分是一个 JSON 对象,描述 JWT 的元数据,通常是下面的样子:
{
"alg": "HS256",
"typ": "JWT"
}
字段 全称 描述
alg algorithm 是签名的算法;一般是 HS256
typ type 固定值为 JWT
二:PayLoad(负载)
Payload 部分也是一个 JSON 对象,用来存放实际需要传递的数据。JWT 规定了7个官方字段,供选用:
{
"iss": "d8b832c0c8caf0d99e9406ed",
"sub": "1",
"aud": "baijunyao",
"iat": "1557066830",
"nbf": "1557066840",
"exp": "1557066850",
"jti": "9e9668d8b8306ed8caf0d94"
}
字段 全称 描述
iss issuer 发布者
sub subject 面向的用户
aud audience 受众
iat issued at 签发时间的时间戳
nbf not before 生效时间的时间戳
exp expiration time 过期时间的时间戳
jti jwt id 每个 JWT 自己的唯一 id
除了官方定义的这些字段,我们也可以自己定义一些自己需要的字段
三:Signature(签名)
Signature 部分是对前两部分的签名,防止数据篡改,默认使用 HS256 算法进行签名;
签名的方式是把 头部和负载分别 base64UrlEncode 后用 . 拼接起来使用 Secret 进行 HS256 ;
Signature = HS256(base64UrlEncode(Header) . base64UrlEncode(Payload), Secret)
四:JWT
JWT一共由Header(头部) . Payload(负载) . Signature(签名) 组成,我们把 base64UrlEncode 的头部和负载以及签名用 . 拼接起来就是一个 JWT 了
JWT = base64UrlEncode(Header) . base64UrlEncode(Payload) . HS256(base64UrlEncode(Header) . base64UrlEncode(Payload), Secret)
由于JWT 中的 Header 和 Payload 是使用 base64UrlEncode 进行加密的; 任何人都可以非常轻松的就使用 base64UrlDecode 进行解密,所以JWT中千万不要存储敏感数据,WT 是由服务器端生成返回给前端的; 前端在发送请求的时候一般把 JWT 放在 HTTP Headers 中的 Authorization 字段中,也可以直接放在URl链接上
五:JWT特点
1:优点
(1)相比于 session 少了读取文件的步骤,效率更高,方便扩展
(2)因为不使用 cookie 天生免疫 CSRF 攻击
(3)因为不使用 cookie 不用担心用户禁用 cookie ;不用悬挂本站需要使用 cookie 的提示信息;
(4)适合 APP 前后端分离的场景
2:缺点
(1)一旦签发不能撤销 没有类似清空 session 的操作
(2)不能自动续签
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 你了解HTTPS,但你可能不了解X.509
- 你真的了解Mybatis的${}和#{}吗?是否了解应用场景?
- 你所了解的 array_diff_uassoc 真的是你了解的那样吗?
- 图文了解 Kubernetes
- 深入了解 JSONP
- 一文了解 Kubernetes
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Seasoned Schemer
Daniel P. Friedman、Matthias Felleisen / The MIT Press / 1995-12-21 / USD 38.00
drawings by Duane Bibbyforeword and afterword by Guy L. Steele Jr.The notion that "thinking about computing is one of the most exciting things the human mind can do" sets both The Little Schemer (form......一起来看看 《The Seasoned Schemer》 这本书的介绍吧!