EKP jd135 JWT 生成token
使用Java JWT库(通常是jjwt)生成JWT(JSON Web Token)的示例。JWT是一种用于在网络应用之间传递声明的安全方式。这段代码使用了HS256算法进行签名。
下面是代码的解释:
1. `Jwts.builder()`: 创建一个JWT生成器对象。
2. `setHeaderParam("alg", "HS256")`: 设置JWT的头部参数alg为HS256,表示使用HS256算法进行签名。
3. `setHeaderParam("typ", "JWT")`: 设置JWT的头部参数typ为JWT,表示JWT的类型。
4. `setIssuedAt(new Date())`: 设置JWT的签发时间为当前时间。
5. `setIssuer(appKey)`: 设置JWT的签发者为appKey,appKey应该是你的应用程序的标识符。
6. `setExpiration(expireDate)`: 设置JWT的过期时间为expireDate,expireDate应该是一个Date对象,表示JWT的有效期。
7. `signWith(SignatureAlgorithm.HS256, secretKey)`: 使用HS256算法和secretKey进行签名。
8. `compact()`: 生成最终的JWT字符串。
请注意,这段代码中的appKey和secretKey应该是你自己的应用程序的密钥,你需要将它们替换为实际的值。
另外,这段代码只是生成JWT的一部分,并没有包含任何声明(claims)。在实际使用中,你可能需要根据你的需求添加一些声明,例如用户ID、角色等信息。
package com.landray.kmss.cmex.ssooauth.util; import io.jsonwebtoken.Claims; import io.jsonwebtoken.ExpiredJwtException; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import org.apache.commons.lang.StringUtils; import java.util.Calendar; import java.util.Date; public class TokenUtil { //过期时间:秒 public static final int EXPIRE = 10; public static String getToken(String appKey, String secretKey) { if (StringUtils.isEmpty(secretKey)) { return null; } Calendar nowTime = Calendar.getInstance(); nowTime.add(Calendar.SECOND, EXPIRE); //过期时间 Date expireDate = nowTime.getTime(); return Jwts.builder() .setHeaderParam("alg", "HS256") .setHeaderParam("typ", "JWT") .setIssuedAt(new Date()) .setIssuer(appKey) .setExpiration(expireDate) .signWith(SignatureAlgorithm.HS256, secretKey) .compact(); } /** * 解析 jwt */ public static boolean verifyToken(String token, String secretKey) { boolean validation = false; Claims claims; try { claims = Jwts.parser().setSigningKey(secretKey).parseClaimsJws(token).getBody(); System.out.println("claims--->" + claims); validation = true; } catch (ExpiredJwtException e) { //此异常为生成的token过期异常 System.out.println("token 已过期" + e.getClaims()); e.printStackTrace(); } catch (Exception e) { System.out.println(" Some other exception in JWT parsing !"); e.printStackTrace(); } return validation; } public static void main(String[] args) { String token = getToken("biBoard", "secret"); System.out.println(token); String token1 = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE2ODM2MTk4OTcsImlzcyI6ImJpQm9hcmQiLCJleHAiOjE2ODM2MTk5MDZ9.ZHw3LDlPtxtNXS5cM0LHyjyXqspde1BzDwNaVvT_s1k"; boolean validation = verifyToken(token1, "secret"); System.out.println(validation); } }