0
点赞
收藏
分享

微信扫一扫

java中生成和验证jwt

    在这篇文章中主要记录一下在Java中如何使用 java 代码生成jwt token,主要是使用jjwt来生成和验证jwt,关于什么是JWT,以及JWT可以干什么不做详解。

    jwt的格式: base64(header).base64(payload).加密算法(base64(header)+“.”+base64(payload),"私钥")

在Java中使用JWT

一、引入jjwt的jar包

<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.0</version>
</dependency>

 

 二、生成JWT token

// 私钥
private static final String SECRET_KEY = "this is a secret key";

public static void main(String[] args) {
// 生成token
String jwtToken = Jwts.builder()
// 头部
.setHeaderParam("typ", "JWT")

// jwt 标注中的申明
.setIssuedAt(new Date()) // 签发时间
.setExpiration(new Date(new Date().getTime() + 10000L))// 过期时间
.setSubject("19930311")// jwt面向的客户
.setIssuer("huan")// jwt的签发者

// 公共申明和私有申明
.claim("user_id", "admin")
.claim("phone", "18251421000")
.claim("age", 25)
.claim("sex", "男")

// 签证
.signWith(SignatureAlgorithm.HS256, SECRET_KEY.getBytes())

.compact();

System.out.println("生成的 jwt token 如下:" + jwtToken);
}

 

三、验证jwt token

// 验证jwt
Jws<Claims> claimsJws = Jwts.parser()
// 验证签发者字段iss 必须是 huan
.require("iss", "huan")
// 设置私钥
.setSigningKey(SECRET_KEY.getBytes())
// 解析jwt字符串
.parseClaimsJws(jwtToken);

// 获取头部信息
JwsHeader header = claimsJws.getHeader();
// 获取载荷信息
Claims payload = claimsJws.getBody();

System.out.println("解析过来的jwt的header如下:" + header.toString());
System.out.println("解析过来的jwt的payload如下:" + payload.toString());

 上面jwtToken的值为第二步生成的jwt token的值

 :1、.require("iss","haun") 表示jwt中的iss字段的值必须是huan

        2、验证jwt的秘钥和生成jwt的秘钥必须是同一个。

四、结果
java中生成和验证jwt_jwt


举报

相关推荐

0 条评论