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的秘钥必须是同一个。

四、结果

 

猜你喜欢

转载自huan1993.iteye.com/blog/2412312
今日推荐