1.什么是javaJwt?

JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.

JWT.IO allows you to decode, verify and generate JWT.https://jwt.io/

javaJwt is library of jwt implemented by java

2.javaJwt的类结构

术语解释:

通常在传输数据时,为了使数据传输更可靠,要把原始数据分批传输,并且在每一批数据的头和尾都加上一定的辅助信息,比如这一批数据量的大小,校验位等,这样就相当于给已经分批原始数据加一些外套,这些外套起到标示作用,使得原始数据不易丢失。
一批数据加上它的“外套”,就形成了传输通道中基本的传输单元,叫做数据帧或者数据包(有的地方数据帧和数据包不是同一概念比如网络传输)。这些数据帧中的记录信息的原始数据就是有效载荷数据,即payload data。
而消息体就是外套。即标记着原始数据的大小等的辅助信息。

1.The Header class represents the 1st part of the JWT, where the Header value is hold.

2.The Payload class represents the 2nd part of the JWT, where the Payload value is hold.

3.The Signature class represents the 3rd part of the JWT, where the Signature value is hold.

4.The JWTDecoder class holds the decode method to parse a given JWT token into it's JWT representation.

5.The JWTVerifier class holds the verify method to assert that a given Token has not only a proper JWT format, but also it's signature matches.

6.The JWTCreator class holds the sign method to generate a complete JWT (with Signature) from a given Header and Payload content.

7.The Claim class holds the value in a generic way so that it can be recovered in many representations.

根据JWT的标准,这些claims可以分为以下三种类型: 
a. Reserved claims(保留),它的含义就像是编程语言的保留字一样,属于JWT标准里面规定的一些claim。JWT标准里面定好的claim有:

  • iss(Issuser):代表这个JWT的签发主体;
  • sub(Subject):代表这个JWT的主体,即它的所有人;
  • aud(Audience):代表这个JWT的接收对象;
  • exp(Expiration time):是一个时间戳,代表这个JWT的过期时间;
  • nbf(Not Before):是一个时间戳,代表这个JWT生效的开始时间,意味着在这个时间之前验证JWT是会失败的;
  • iat(Issued at):是一个时间戳,代表这个JWT的签发时间;
  • jti(JWT ID):是JWT的唯一标识。

b. Public claims,略(不重要)

c. Private claims,这个指的就是自定义的claim。比如前面那个结构举例中的admin和name都属于自定的claim。这些claim跟JWT标准规定的claim区别在于:JWT规定的claim,JWT的接收方在拿到JWT之后,都知道怎么对这些标准的claim进行验证;而private claims不会验证,除非明确告诉接收方要对这些claim进行验证以及规则才行。

按照JWT标准的说明:保留的claims都是可选的,在生成payload不强制用上面的那些claim,你可以完全按照自己的想法来定义payload的结构,不过这样搞根本没必要:第一是,如果把JWT用于认证, 那么JWT标准内规定的几个claim就足够用了,甚至只需要其中一两个就可以了,假如想往JWT里多存一些用户业务信息,比如角色和用户名等,这倒是用自定义的claim来添加;第二是,JWT标准里面针对它自己规定的claim都提供了有详细的验证规则描述,每个实现库都会参照这个描述来提供JWT的验证实现,所以如果是自定义的claim名称,那么你用到的实现库就不会主动去验证这些claim。

参考文献:

【1】http://www.cnblogs.com/lyzg/p/6028341.html

转载于:https://www.cnblogs.com/davidwang456/p/6478968.html

一张图了解javaJwt相关推荐

  1. 不带头节点的链表有哪些缺点_23张图!万字详解「链表」,从小白到大佬!

    链表和数组是数据类型中两个重要又常用的基础数据类型. 数组是连续存储在内存中的数据结构,因此它的优势是可以通过下标迅速的找到元素的位置,而它的缺点则是在插入和删除元素时会导致大量元素的被迫移动,为了解 ...

  2. 3dmax图像采样器抗锯齿_内幕揭秘!同样的场景同一张图,用3DMAX网渲平台进行二次渲染时间竟然相差3个小时之多!...

    一个分辨率:4000*2000的室内客餐厅,3dmax版本是2014版本,渲染器版本为vray3.63,机器:阿里云1台服务器,这个同样的场景同样的参数同一张图,用3dmax网渲平台进行二次渲染发现时 ...

  3. 17张图揭密支付宝系统架构

    支付宝的系统架构图,仅供参考.不管是不是支付行业,都值得我们参考,学习. image image image image image image image image image image ima ...

  4. 参加海峡两岸城市地理信息系统论坛2010 年会(一张图、规划信息化和空间句法的碎碎念)...

    上周末去清华建筑学院开了个会,叫做海峡两岸城市地理信息系统论坛2010 年会,主题很大,但是内容比较集中一些,就是围绕着GIS与城市规划.一天下来听了20个报告,挺佩服主办方的时间控制,这么密集的报告 ...

  5. 7000 字 23 张图,Pandas一键生成炫酷的动态交互式图表

    作者 | 俊欣 来源 | 关于数据分析与可视化 今天小编来演示一下如何用pandas一行代码来绘制可以动态交互的图表,并且将绘制的图表组合到一起,组成可视化大屏,本次小编将要绘制的图表有 折线图 散点 ...

  6. 手绘10张图,把CSRF跨域攻击、JWT跨域认证说得明明白白的

    作者 | 写代码的明哥 来源 | Python编程时光 这篇文章本应该是属于 HTTP 里的一部分内容,但是我看内容也挺多的,就单独划分一篇文章来讲下. 什么是跨域请求 要明白什么叫跨域请求,首先得知 ...

  7. 有答案了!一张图告诉你到底学Python还是Java!你咋看?

    2019年,该学Java还是Python? 不,实际上应该这样问:都9102年了,难道有谁不想成为Python程序员吗? 作为"常青树大佬"Java 和"新晋大佬&quo ...

  8. 一张图看懂微软人工智能的布局

    一向低调的微软,最近在人工智能领域前所未有地高调了起来. 前两天,微软(亚洲)互联网工程院发布了一份技术声明,称人类历史上第一次与人工智能进行全双工语音电话,并不是发生在美国,而是在中国!这个人工智能 ...

  9. 学Java还是Python?一张图告诉你!

    Java 和 Python 一直都是两种很火很强大的编程语言,对于刚开始起步学习编程的同学来说,会迷惑且最经常问的问题是,我该学 Java 还是 Python,是不是 Python 容易学,或是应该先 ...

最新文章

  1. 如何在电脑桌面添加计算机网络等,如何实现在电脑桌面上添加文字提醒
  2. MongoDB 索引
  3. java:方法覆盖与方法重载
  4. Spark SQL(五)之数据加载与存储
  5. 论文浅尝 - CIKM2020 | Relation Reflection Entity Alignment
  6. lex和yacc环境配置
  7. 【LeetCode】剑指 Offer 24. 反转链表
  8. Ubuntu 安装 Clang 编译器
  9. R-FCN算法及Caffe代码详解
  10. 如何打开.hdx文件
  11. 计算机显示器刷新率怎么调,显示器刷新率怎么超频?电脑显示器提高屏幕刷新率超频教程...
  12. 如何编写一个短线交易策略(收藏)
  13. 风控模型基本概念和方法
  14. Docker 启动和退出一个容器
  15. python爬虫:搜狗微信公众号文章信息的采集(https://weixin.sogou.com/),保存csv文件
  16. 按钮自动发光用html怎么弄,HTML+CSS+JS发光开关按钮
  17. 如何解决MySQL无法打开之——错误2013:lose connection to MySQL blablabla
  18. python真值是什么意思_Python 为什么能支持任意的真值判断?
  19. 怎样使用markdown做笔记、python入门小白
  20. Java 8 辣么大(lambda)表达式不慌之-----(二)Predicate

热门文章

  1. sift计算描述子代码详解_SIFT解析(三)生成特征描述子
  2. itest听力答案2020_itest大学英语3测试答案
  3. matlab 随机森林算法_(六)如何利用Python从头开始实现随机森林算法
  4. c语言编程将图片上下翻转,C语言实现矩阵翻转(上下翻转、左右翻转)
  5. android自动更新列表,Android数据库表结构自动升级
  6. 将服务端移植到Linux和MAC OS
  7. MySQL中的enum和set类型
  8. linux怎么打开云硬盘,Linux系统云服务器如何挂在磁盘
  9. websocket 携带请求头_WebSocket与Nginx的小秘密
  10. vue init webpack缺少标识符_vue 如何从单页应用改造成多页应用_vue.js