欢迎关注方志朋的博客,回复”666“获面试宝典

来源:https://blog.csdn.net/oscar999/article/details/102728303

JWT介绍

JWT概念

JWT , 全写JSON Web Token, 是开放的行业标准RFC7591,用来实现端到端安全验证.

简单来说, 就是通过一些算法对加密字符串和JSON对象之间进行加解密。

JWT加密JSON,保存在客户端,不需要在服务端保存会话信息。,可以应用在前后端分离的用户验证上,后端对前端输入的用户信息进行加密产生一个令牌字符串, 前端再次请求时附加此字符串,后端再使用算法解密。

JWT流程:

JWT的构成

JWT字符串:一段加密的JSON字符串。

包含了三类信息

  • Header头部:Token类型和加密算法。加密算法常见的有MD5、SHA、HMAC( Hash Message Authentication Code)。

  • PayLoad负载:存放有效信息,包括

标准的声明,类似开发语言总的关键字。包括

iss(Issuser) - 签发者
sub Subject 面向主体
aud Audience 接收方
exp Expiration time 过期时间戳
nbf Not Before, 开始生效时间戳
iat(Issued at) 签发时间
jti(JWT ID): 唯一标识

公共的声明:一般添加业务相关的必要信息,因为可解密,不建议敏感信息。

私有的声明:提供者和消费者共同定义的声明,Base64对称解密,不建议敏感信息

Signature签证

签证信息包括三部分:

Base64加密的header

Base64加密的payload

secret-密钥 使用header中声明的加密算法对Header和payload的加密连接字符串进行加盐secret组合加密。密钥保存在服务端,服务端根据密钥进行解密验证。

JWT与开发语言

JWT只是一个标准 可以通过不过的开发语言实现,包括Java,.NET, Python,Node Js, JavaScript,Perl, Ruby,Go等。同一种语言,不同的开发者提供了多种实现库,以Java语言为例有java-jwt、?jose4j、nimbus-jose-jwt、jjwt

JWT官网

https://jwt.io/

这个网站提供了在线的基于不同算法的字符串和JSON对象的转换工具,同时也收集了不同语言的多种实现库。

java-jwt

java-jwt是Java语言中推荐的JWT实现库,使用Maven导入如下:

<dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.8.3</version>
</dependency>

产生加密Token

String token = JWT.create().withExpiresAt(newDate(System.currentTimeMillis()))  //设置过期时间.withAudience("user1") //设置接受方信息,一般时登录用户.sign(Algorithm.HMAC256("111111"));  //使用HMAC算法,111111作为密钥加密

解密Token获取负载信息并验证Token是否有效

String userId = JWT.decode(token).getAudience().get(0);Assertions.assertEquals("user1", userId);JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256("111111")).build();jwtVerifier.verify(token);
热门内容:
  • 阿里二面:GET 请求能传图片吗?

  • 别再用 BeanUtils 了,这款 PO VO DTO 转换神器不香么?

  • 抗住双11超高并发,今年排第一的调优方案,没有之一!

  • 妙用Java 8中的 Function接口 消灭if...else(非常新颖的写法)

  • 阿里二面:现针对一个请求量10000次/s的秒杀系统,说说你的优化思路

最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

明天见(。・ω・。)ノ♡

java-jwt这个库没用过吧?相关推荐

  1. Java使用JWT开源库

    一.JWT简介 JWT官方文档: https://jwt.io/ https://jwt.io/introduction/ 1.什么是JWT 图片来自官方文档,解释的很清楚了. 通俗地说,JWT的本质 ...

  2. java jwt 验证_教程:用Java创建和验证JWT

    java jwt 验证 "我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多 ...

  3. 25个Java机器学习工具库

    本列表总结了25个Java机器学习工具&库: 1. Weka集成了数据挖掘工作的机器学习算法.这些算法可以直接应用于一个数据集上或者你可以自己编写代码来调用.Weka包括一系列的工具,如数据预 ...

  4. 25个Java机器学习工具库--转载

    本列表总结了25个Java机器学习工具&库: 1. Weka集成了数据挖掘工作的机器学习算法.这些算法可以直接应用于一个数据集上或者你可以自己编写代码来调用.Weka包括一系列的工具,如数据预 ...

  5. Java Streams,第 1 部分: java.util.stream 库简介

    Java SE 8 中主要的新语言特性是拉姆达表达式.可以将拉姆达表达式想作一种匿名方法:像方法一样,拉姆达 表达式具有带类型的参数.主体和返回类型.但真正的亮点不是拉姆达表达式本身,而是它们所实现的 ...

  6. java 81 08,Java更多的库谜题81:烧焦到无法识别

    下面这个程序看起来是在用一种特殊的方法做一件普通的事.那么,它会打印出什么呢? public class Greeter{ public static void main(String[] args) ...

  7. 利用JNative实现Java调用动态库

    由于项目要求,需要用Java调用windows的dll文件,查了一下,如果用JNI的话是比较麻烦的,在sourceforge.net上搜索了一下 "Java dll",首先出现的是 ...

  8. java联接pg库_Java14:使用Java 14的新记录联接数据库表

    java联接pg库 您是否知道可以使用Java 14的预览记录功能将数据库表连接到Java Stream中? 阅读这篇简短的文章,并了解如何使用Speedment Stream ORM完成它. 我们将 ...

  9. java联接pg库_成为Java流大师–第5部分:将联接的数据库表转换为流

    java联接pg库 是否可以将联接的数据库表转换为Java Stream? 答案是肯定的. 由于我们已经多次提出这个问题,因此我们决定写另一篇动手实验文章,说明如何执行更高级的Stream Joins ...

最新文章

  1. Redis序列化配置类
  2. javascript完美判断类型
  3. java对象的序列化机制详解
  4. [MM9]复制格式的快捷操作
  5. 顶尖技术专家严选,15场前沿论坛思辨,2019中国大数据技术大会邀您共赴!
  6. 中药说明书实体识别抽取top1
  7. solaris常用命令总结
  8. NLP系列之文本分类
  9. IDEA API文档的导出方式
  10. 解密QQ的MsgEx.db消息文件格式
  11. c语言———链表的创建
  12. php-fpm master 关系,php-fpm master worker 关系介绍
  13. 电脑计算机为什么总自动开启,电脑总是自动重启怎么办?这个问题不能忽视
  14. java输入两个数字和运算符_java 第二天运算符及录入函数Scanner
  15. 虚拟硬盘 服务器 破解,服务器版虚拟硬盘_Primo Ramdisk Server Edition V5.6.1 免费版
  16. win10 oracle11g 乱码,小编教你解决win10系统出现汉字乱码的处理办法
  17. JUDE工具类图制作
  18. MySQL数据的导出和导入工具
  19. 亲历5.12汶川大地震----杨大伟作为志愿者14日奔赴汶川等地抗震救灾
  20. 手写PE结构解析工具

热门文章

  1. Mavlink自定义协议
  2. 关于 MongoDB 与 SQL Server 通过本身自带工具实现数据快速迁移 及 注意事项 的探究...
  3. bzoj1036: [ZJOI2008]树的统计Count 树链剖分
  4. 学习总结--团队项目
  5. Java学习(三)JSP学习1
  6. Android Studio导入Eclipse项目的两种方法
  7. 关于javascript的keycode
  8. win10+Chrome浏览器截长图方法
  9. 【数据结构】最小生成树 Prim算法 Kruskal算法
  10. WAIC剪影:AI的未来,关乎星辰大海