JWT简要说明
什么是JWT?
JSON Web Token (JWT) 是一种开放标准 (RFC 7519) 定义了一种用于安全传输的紧凑、自包含(注:或自说明) 的Json结构, 被传输的信息可以通过JWT内容中的算法+密钥进行加密解密,来确保信息可信。JWT可以使用一个加密串 (使用HMAC 对称算法,或非对称算法RSA 与ECDSA)
JWT用途
JWT主要用于两种场景:认证(Authorization)
与 信息加密传递
JWT结构
JWT主要分为三部分:
- Header
- Payload
- Signature
JWT形式为Header.Payload.Signature
,三个部分都是json通过Base64加密而成,也就是说:JWT可以被任何人读取,只要使用Base64UrlENcode解密下就可以!(信息加密后边讲)
下面分别介绍这三部分内容与其组成:
Header内容
Header这部分包含令牌所用的算法(alg:algorithm, 常用的有HMAC SHA256或RSA)和 令牌的类型(typ: Token Type,JWT类型只能是"typ":"JWT"
)未被加密前的样子就像
{
"alg": "HS256",
"typ": "JWT"
}
Payload内容
Payload这部分包含token的信息,这部分可以包含 已被注册信息、公有的信息、私有的信息,提供了很多可以自定义的部分
官方给了一些推荐使用的已定义的参数名(已被注册信息):
- "iss" (Issuer) Claim
- "sub" (Subject) Claim
- "aud" (Audience) Claim
- "exp" (Expiration Time) Claim
- "nbf" (Not Before) Claim
- "iat" (Issued At) Claim
- "jti" (JWT ID) Claim
官方的例子:
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
公有的信息、私有的信息都是自定义的,注意不要与官方给的冲突即可,另外注意保持参数尽量少且不要暴露隐私数据
JWT的长度比较长,如果保存JWT到cookie中,可能会突破cookie的4k存储限制,所以需要保持参数尽量少
Signature内容
签名部分使用Header中定义的算法与信息传递方的密钥(公钥/私钥),把经过Base64Url加密的Header与Payload使用.
连接在一起,进行加密得出签名。用来验证此JWT信息未被篡改
最后整体放在一起使用.
连接在一起,它长这样:
下文预警
本文内容主要是为了引出下文使用JWT作为Spring Security OAuth2的token存储
最新文章
- CSS3 动画效果带来的bug
- Manacher
- 虚拟机下Ubuntu没有GUI图形界面,解决方法
- [转]禁用和启用链接(a元素|LinkButton)的js方法
- try、catch、finally的使用分析---与 return 相关
- Migration of ASP.NET app from IIS6 to IIS7 (7.5)
- JS方法在iframe父子窗口间的调用
- c#利用WebClient和WebRequest获取网页源代码
- linux之cal命令
- Win7下qt5.3.1+opencv2.4.9编译环境的搭建(好多 Opencv2.4.9源码分析的博客)
- C语言程序转换为Python语言
- 洛谷-火柴棒等式-NOIP2008提高组复赛
- Vue.use自定义自己的全局组件
- Java之进程与线程
- UIImage类方法总结及UIImage生成方法对比
- NOIP2015斗地主(搜索+模拟+贪心)
- JavaSE习题 第四章 类与对象
- 在django中,执行原始sql语句
- idou老师教你学istio :基于角色的访问控制
- js / jquery 获取和设置 FCK Editor 的值
热门文章
- .deb文件安装应该怎么做
- Requests库主要方法解析以及Requests库入门需要掌握的框架
- AllowsTransparency=";True"; 怎么放大缩小窗体
- 关于GC(下):CMS和G1GC的比较
- CSS3 盒模型---css初始化会用到:box-sizing: border-box 盒子大小为 width 就是说 padding 和 border 是包含到width里面的
- ES6变量的解构赋值(二)对象的解构赋值
- 认识Metasploit框架
- [b0036] python 归纳 (二一)_多进程数据共享和同步_服务进程Manager
- [20190510]rman备份的疑问7.txt
- ctr预估论文梳理和个人理解