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

Posted xhmj12

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试官:jwt 是什么?java-jwt 呢?懵逼了。。相关的知识,希望对你有一定的参考价值。

相关阅读:2T架构师学习资料干货分享

作者: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-

1、985副教授工资曝光

2、心态崩了!税前2万4,到手1万4,年终奖扣税方式1月1日起施行~

3、雷军做程序员时写的博客,很强大!

4、人脸识别的时候,一定要穿上衣服啊!

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

6、绩效被打3.25B,员工将支付宝告上了法院,判了

以上是关于面试官:jwt 是什么?java-jwt 呢?懵逼了。。的主要内容,如果未能解决你的问题,请参考以下文章

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

面试官:找出数组中的第 6 大元素,我直接懵逼了。。

使用 java-jwt 验证访问令牌签名

面试官问:为什么需要消息队列?使用消息队列有什么好处?问的我有点懵逼。。。

面试官:Synchronized 底层实现是怎样的?我一脸懵逼。。

面试官:为什么数据库连接池不采用 IO 多路复用?我懵逼了。。