面试官:jwt 是什么?java-jwt 呢?懵逼了。。

互联网架构师

共 2153字,需浏览 5分钟

 ·

2022-02-20 12:07

上一篇:Redis 分布式锁使用不当,酿成一个重大事故,超卖了100瓶飞天茅台!!!

作者:oscar999

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


JWT介绍


JWT概念


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


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


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


JWT流程


JWT的构成


JWT字符串:一段加密的JSON字符串。包含了三类信息



标准的声明,类似开发语言总的关键字。包括
iss(Issuser) - 签发者sub Subject 面向主体aud Audience 接收方exp Expiration time 过期时间戳nbf Not Before, 开始生效时间戳iat(Issued at) 签发时间jti(JWT ID):唯一标识


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


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


Signature签证


签证信息包括三部分:



密钥保存在服务端,服务端根据密钥进行解密验证。


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);


感谢您的阅读,也欢迎您发表关于这篇文章的任何建议,关注我,技术不迷茫!小编到你上高速。

    · END ·
最后,关注公众号互联网架构师,在后台回复:2T,可以获取我整理的 Java 系列面试题和答案,非常齐全


正文结束


推荐阅读 ↓↓↓
1.心态崩了!税前2万4,到手1万4,年终奖扣税方式1月1日起施行~

2.深圳一普通中学老师工资单曝光,秒杀程序员,网友:敢问是哪个学校毕业的?

3.从零开始搭建创业公司后台技术栈

4.程序员一般可以从什么平台接私活?

5.清华大学:2021 元宇宙研究报告!

6.为什么国内 996 干不过国外的 955呢?

7.这封“领导痛批95后下属”的邮件,句句扎心!

8.15张图看懂瞎忙和高效的区别!

浏览 35
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报