· 6 years ago · Aug 27, 2019, 12:40 PM
1package appLayer;
2
3import io.jsonwebtoken.*;
4
5import javax.crypto.spec.SecretKeySpec;
6import javax.xml.bind.DatatypeConverter;
7import java.security.Key;
8import java.util.Date;
9import java.util.Map;
10
11public class JsonWebToken {
12 private String key = "secret_key";
13 private String jwt;
14
15 public JsonWebToken(){
16 this.jwt = null;
17 }
18
19 public String CreateJsonWebToken(String id, String isuser, String subject, long ttlMillis){
20 //The JWT signature algorithm we will be using to sign the token
21 SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
22
23 long nowMillis = System.currentTimeMillis();
24 Date now = new Date(nowMillis);
25
26 //We will sign our JWT with our ApiKey secret
27 byte[] apiKeySecretBytes = DatatypeConverter.parseBase64Binary(key);
28 Key signingKey = new SecretKeySpec(apiKeySecretBytes, signatureAlgorithm.getJcaName());
29
30 Header header = Jwts.header();
31 header.setType("JWT");
32
33 JwtBuilder builder = Jwts.builder().setHeader((Map<String, Object>)
34 header).setId(id)
35 .setIssuedAt(now)
36 .setSubject(subject)
37 .setIssuer(isuser)
38 .signWith(signatureAlgorithm, signingKey);
39
40 //if it has been specified, let's add the expiration
41 if (ttlMillis >= 0) {
42 long expMillis = nowMillis + ttlMillis;
43 Date exp = new Date(expMillis);
44 builder.setExpiration(exp);
45 }
46
47 //Builds the JWT and serializes it to a compact, URL-safe string
48 return builder.compact();
49 }
50
51 public String ParseJsonWebToken(String jwt) {
52 //This line will throw an exception if it is not a signed JWS (as expected)
53 Claims claims = Jwts.parser()
54 .setSigningKey(DatatypeConverter.parseBase64Binary(key))
55 .parseClaimsJws(jwt).getBody();
56
57 System.out.println("ID: " + claims.getId());
58 System.out.println("Subject: " + claims.getSubject());
59 System.out.println("Issuer: " + claims.getIssuer());
60 System.out.println("Expiration: " + claims.getExpiration());
61
62 String r = "ID: " + claims.getId() + "Subject: " + claims.getSubject() + "Issuer: " + claims.getIssuer() + "Expiration: " + claims.getExpiration();
63 return r;
64 }
65}