JWT简要说明
2019-12-15 00:56
736 查看
什么是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存储
相关文章推荐
- veritas升级及备份至磁盘两个问题简要说明
- C#关键字var的简要说明
- linux iostat命令输出简要说明
- C#之消息队列的简要说明
- Glide使用简要说明
- Statspack之十一-Statspack报告各部分简要说明
- 简要说明S3C2410X的Nandflash启动模式
- APP适配IOS8,iPhone6和Plus截图简要说明,有iP6截图下载供研究(原创)
- sqlite3接口简要说明
- sharepoint站点支持AJAX功能做些简要说明
- PHPExcel操作简要说明
- ARM指令的内存访问方式简要说明
- Bibtex使用方法简要说明(linux)
- emacs-async库简要说明
- asp.net2.0中Web.config文件标准配置简要说明
- 【转】Ettercap简要原理介绍以及使用说明
- 嵌入式系统启动及初始化——关于#pragma指令的简要说明
- 根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。
- Eclipse 安装需要的 JDK 版本简要说明
- CSDN CODE平台,中国版Github简要使用说明