当前位置: 首页 > 后端技术 > Java

面试官:什么是jwt?java-jwt呢?使困惑,.

时间:2023-04-01 15:08:55 Java

来源:https://blog.csdn.net/oscar99...JWT引入JWT的概念JWT,全写成JSONWebToken,是一个开放的行业标准RFC7591,用于实现端到端的安全确认。简单的说,就是通过一些算法在加密字符串和JSON对象之间进行加解密。JWT将JSON加密并保存在客户端,而不会在服务器端保存会话信息,可应用于前后端分离的用户认证。后端对前端输入的用户信息进行加密,生成token字符串。前端再次将这个字符串追加到请求中,后端使用算法解密。JWT流程:JWT组合JWT字符串:加密后的JSON字符串。包含三种类型的信息头:令牌类型和加密算法。常见的加密算法包括MD5、SHA和HMAC(HashMessageAuthenticationCode)。PayLoad加载:存放有效信息,包括标准语句,类似于开发语言的通用关键字。包括iss(Issuser)-发行者subSubject面向对象audAudiencereceiverexpExpirationtimeexpirationtimestampnbfNotBefore,有效时间戳iat(Issuedat)发行时间jti(JWTID):唯一标识公开声明:general添加必要的业务-相关信息。不建议使用敏感信息,因为它可以被解密。privatestatement:提供者和消费者共同定义的声明,Base64对称解密,敏感信息不推荐使用Signaturevisa签证信息由三部分组成:Base64加密headerBase64加密payloadsecret-key使用header中声明的加密算法配对标头和有效负载的加密连接字符串使用加盐秘密组合加密。密钥保存在服务器上,服务器根据密钥进行解密和验证。JWT和开发语言JWT只是一个标准,可以通过各种开发语言来实现,包括Java、.NET、Python、NodeJs、JavaScript、Perl、Ruby、Go等。同一种语言,不同的开发者提供了多种多样的实现库。以Java语言为例,有java-jwt,?jose4j,nimbus-jose-jwt,jjwtJWT官网https://jwt.io/这个网站在线提供了一个基于不同算法的字符串和JSON对象的转换工具,并且还收集了多个不同语言的实现库。java-jwtjava-jwt是Java语言中推荐的JWT实现库,使用Maven导入如下:com.auth0java-jwt3.8。3生成加密的TokenStringtoken=JWT.create().withExpiresAt(newDate(System.currentTimeMillis()))//设置过期时间.withAudience("user1")//设置接收者信息,一般登录user.sign(Algorithm.HMAC256("111111"));//使用HMAC算法,111111为key对Token进行加解密,获取payload信息,验证Token是否有效StringuserId=JWT.decode(token).getAudience()。get(0);Assertions.assertEquals("user1",userId);JWTVerifierjwtVerifier=JWT.require(Algorithm.HMAC256("111111")).build();jwtVerifier.verify(token);近期热点文章推荐:1.1,000+Java面试题及答案(2022最新版)2.厉害了!Java协程来了。..3.SpringBoot2.x教程,太全面了!4.20w程序员红包封面,快拿。..5.《Java开发手册(嵩山版)》最新发布,赶快下载吧!感觉不错,别忘了点赞+转发!