这期内容当中小编将会给大家带来有关Java Jwt库的简介及使用方法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
JWT , 全写JSON Web Token, 是开放的行业标准RFC7591,用来实现端到端安全验证.
简单来说, 就是通过一些算法对加密字符串和JSON对象之间进行加解密。
JWT加密JSON,保存在客户端,不需要在服务端保存会话信息。,可以应用在前后端分离的用户验证上,后端对前端输入的用户信息进行加密产生一个令牌字符串, 前端再次请求时附加此字符串,后端再使用算法解密。
JWT字符串: 一段加密的JSON字符串。
包含了三类信息
Header头部: Token类型和加密算法。加密算法常见的有MD5、SHA、HMAC( Hash Message Authentication Code)。
PayLoad负载: 存放有效信息,包括
1.标准的声明,类似开发语言总的关键字。包括
iss(Issuser) - 签发者
sub Subject 面向主体
aud Audience 接收方
exp Expiration time 过期时间戳
nbf Not Before, 开始生效时间戳
iat(Issued at) 签发时间
jti(JWT ID): 唯一标识
2.公共的声明: 一般添加业务相关的必要信息,因为可解密,不建议敏感信息。
3.私有的声明:提供者和消费者共同定义的声明,Base64对称解密,不建议敏感信息
Signature签证
签证信息包括三部分:
Base64加密的header
Base64加密的payload
secret-密钥
使用header中声明的加密算法对Header和payload的加密连接字符串进行加盐secret组合加密。
密钥保存在服务端,服务端根据密钥进行解密验证。
JWT只是一个标准
可以通过不过的开发语言实现,包括Java,.NET, Python,Node Js, JavaScript,Perl, Ruby,Go等。
同一种语言,不同的开发者提供了多种实现库,以Java语言为例有java-jwt、?jose4j、nimbus-jose-jwt、jjwt
https://jwt.io/
这个网站提供了在线的基于不同算法的字符串和JSON对象的转换工具,同时也收集了不同语言的多种实现库。
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);
上述就是小编为大家分享的Java Jwt库的简介及使用方法了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。