面试官:jwt 是什么?java-jwt 呢?懵逼了。。
AI全套:Python3+TensorFlow打造人脸识别智能小程序
最新人工智能资料-Google工程师亲授 Tensorflow-入门到进阶
黑马头条项目 - Java Springboot2.0(视频、资料、代码和讲义)14天完整版
作者:oscar999
来源:blog.csdn.net/oscar999/article/details/102728303
JWT介绍
JWT概念
JWT , 全写JSON Web Token, 是开放的行业标准RFC7591,用来实现端到端安全验证.
简单来说, 就是通过一些算法对加密字符串和JSON对象之间进行加解密。
JWT加密JSON,保存在客户端,不需要在服务端保存会话信息。,可以应用在前后端分离的用户验证上,后端对前端输入的用户信息进行加密产生一个令牌字符串, 前端再次请求时附加此字符串,后端再使用算法解密。
JWT流程
JWT的构成
JWT字符串:一段加密的JSON字符串。包含了三类信息
标准的声明,类似开发语言总的关键字。包括 - 签发者
sub Subject 面向主体
aud Audience 接收方
exp Expiration time 过期时间戳
nbf Not Before, 开始生效时间戳
at) 签发时间
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.auth0groupId>
<artifactId>java-jwtartifactId>
<version>3.8.3version>
dependency>
产生加密Token
String token = JWT.create()
.withExpiresAt(newDate(System.currentTimeMillis())) //设置过期时间
.withAudience("user1") //设置接受方信息,一般时登录用户
.sign(Algorithm.HMAC256("111111")); //使用HMAC算法,111111作为密钥加密
String userId = JWT.decode(token).getAudience().get(0);
Assertions.assertEquals("user1", userId);
JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256("111111")).build();
jwtVerifier.verify(token);
全栈架构社区交流群
「全栈架构社区」建立了读者架构师交流群,大家可以添加小编微信进行加群。欢迎有想法、乐于分享的朋友们一起交流学习。
Flutter 移动应用开发实战 视频(开发你自己的抖音APP) Java面试进阶训练营 第2季(分布式篇) Java高级 - 分布式系统开发技术视频
评论