时间:2021-05-19
什么是 JWT
这里是jwt 官方地址,想了解更多的可以在这里查看。
jwt 全称是JSON Web Token,从全称就可以看出 jwt 多用于认证方面的。这个东西定义了一种简洁的,自包含的,安全的方法用于通信双方以 json 对象的形式传递信息。其中简洁,安全,传递信息和 web 系统非常契合。
jwt 实际上就是一个字符串,由以下三个部分构成(通过.分隔):
因此一个 jwt 字符串都是如下的形式:
Header.Payload.Signature
Header
header 大多数情况下是只包含两个属性的 json 字符串,token 的类型(“JWT”)和用到的算法(比如 HS256,RS256,ES256 等)如下:
{"alg": "HS256","typ": "JWT"}然后用 Base64 将其编码就等到了 jwt 的第一部分
Payload
payload 顾名思义用于携带数据的,这里的数据有三种类型:
这些数据也是 json 的形式,用 Base64 编码后就得到了 JWT 的第二个部分。
Signature
签名就是通过设定的秘钥和签名算法来对 header 和 payload 进行签名得到一个签名字符串,将这三个字符串组合起来就是 JWT 了。
java 中使用
通过java-jwt来实现,首先引入依赖:
<dependency><!-- 截止当前最新版本为3.7 --><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.7.0</version></dependency>签名
使用 HMC256,代码入下:
private static final Algorithm ALGORITHM= Algorithm.HMAC256("security");public static String encode() {//通过秘钥生成一个算法String token = JWT.create()//设置签发者.withIssuer("test")//设置过期时间为一个小时.withExpiresAt(new Date(System.currentTimeMillis()+60*60*1000))//设置用户信息.withClaim("name","小明").withClaim("age",20).sign(ALGORITHM);return token;}验证
验证代码如下:
//校验类private static final JWTVerifier JWT_VERIFIER= JWT.require(ALGORITHM).withIssuer("test").build();public static void decode(String token) {DecodedJWT decodedJWT = JWT_VERIFIER.verify(token);//如果校验失败会抛出异常//payload可从decodeJWT中获取}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
1、深入了解对企业产品 对自己要推广的产品,先要深入了解,只有深入了解才能设计出合适的推广方案,才能把推广工作做的知名,效果发辉大。2、深入了解用户群 我们
一、对企业产品深入了解 对自己要推广的产品,先要深入了解,只有深入了解才能设计
一、对企业产品深入了解 对自己要推广的产品,先要深入了解,只有深入了解才能设计出最合适的推广方案,才能把推广工作做的最好,效果发辉最大。 二、对竞争对手
1、对企业产品深入了解对自己要推广的产品,先要深入了解,只有深入了解才能设计出合适的推广方案,才能把推广工作做的知名,效果发辉大。2、对竞争对手要有一定了解仅了
一、对企业产品深入了解 对自己要推广的产品,先要深入了解,只有深入了解才能设计出最合适的推广方案,才能把推广工作做的最好,效果发辉最大。 二、对竞争对手要