All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.uetty.common.tool.core.JwtUtil Maven / Gradle / Ivy

package com.uetty.common.tool.core;

import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTCreator;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.Claim;
import com.auth0.jwt.interfaces.DecodedJWT;
import lombok.extern.slf4j.Slf4j;

import java.util.*;
import java.util.Map;

@SuppressWarnings("unused")
@Slf4j
public class JwtUtil {

    private static final String KEY_USERNAME = "username";

    public static String createToken(Map data, String secret, long expire) {
        JWTCreator.Builder builder = JWT.create();
        if (data != null) {
            data.forEach(builder::withClaim);
        }
        Date date = new Date();
        builder.withIssuedAt(date);
        Date expireDate = new Date(date.getTime() + expire);
        builder.withExpiresAt(expireDate);
        return builder.sign(Algorithm.HMAC256(secret));
    }

    @SuppressWarnings("unused")
    public static String createToken(String username, Map data, String secret, long expire) {
        data.put(KEY_USERNAME, username);
        return createToken(data, secret, expire);
    }

    public static void verify(String jwtToken, String secret) {
//        if (jwtToken == null) {
//            jwtToken = "..";
//        }
        JWTVerifier verifier = JWT.require(Algorithm.HMAC256(secret)).build();
        verifier.verify(jwtToken);
    }

    public static Map getData(String jwtToken) {
        DecodedJWT jwt = JWT.decode(jwtToken);
        Map claims = jwt.getClaims();
        Map map = new HashMap<>();

        for (Map.Entry entry : claims.entrySet()) {
            switch (entry.getKey()) {
                case "iat":
                case "exp":
                    break;
                default:
                    map.put(entry.getKey(), entry.getValue().asString());
            }
        }
        return map;
    }

    @SuppressWarnings("unused")
    public static String getUsername(String jwtToken) {
        DecodedJWT jwt = JWT.decode(jwtToken);
        return jwt.getClaims().get(KEY_USERNAME).asString();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy