12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- package com.icontrols.oauth.utils;
- import java.io.UnsupportedEncodingException;
- import java.security.GeneralSecurityException;
- import java.security.NoSuchAlgorithmException;
- import java.util.Base64;
- import java.util.Base64.Decoder;
- import org.json.JSONObject;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import com.icontrols.oauth.constants.CONSTANTS;
- import io.jsonwebtoken.Jwts;
- import io.jsonwebtoken.SignatureAlgorithm;
- public class JWTUtils2 {
- private static final Logger logger = LoggerFactory.getLogger(JWTUtils2.class);
- public JWTUtils2() {
- super();
- }
- // // icontrols1793!@# base64인코딩하고앞에 난수(dlswmd) 붙임
- // public static String ACCESS_TOEKN_SECRET_KEY = "dlswmdaWNvbnRyb2xzMTc5MyFAIw==";
- // // icontrolsrefresh1793!@#
- // public static String REFRESH_TOKEN_SECRET_KEY = "aWNvbnRyb2xzcmVmcmVzaDE3OTMhQCM=";
- /**
- *
- * @param token
- * @return
- * @throws UnsupportedEncodingException
- */
- public static boolean validateToken(String token) throws UnsupportedEncodingException {
- String secretKey = "";
- secretKey = CONSTANTS.ACCESS_TOEKN_SECRET_KEY;
- logger.info(token);
- Decoder decoder = Base64.getDecoder();
- // 시그니처가 맞는지 확인
- String enPayload = token.split("\\.")[1];
- String dePayload = new String(decoder.decode(enPayload));
-
- JSONObject obj = new JSONObject(dePayload);
- String jwt = Jwts.builder().claim("exp", obj.get("exp")) // 1시간 -> 설정정보로 변경해야함
- .claim("cmpIp", obj.get("cmpIp")).claim("homeId", obj.get("homeId")).claim("iat", obj.get("iat"))
- .signWith(SignatureAlgorithm.HS256, secretKey.getBytes("UTF-8")).compact();
-
- if (token.equals(jwt)) {
- long iat = Long.parseLong(obj.get("iat").toString());
- long currentTime = System.currentTimeMillis() / 1000;
- if (currentTime > iat + Long.parseLong(obj.get("exp").toString())) {
- return false;
- }
- return true;
- }
- return false;
- }
- /**
- *
- * @param token
- * @return 동/호
- * @throws UnsupportedEncodingException
- * @throws NoSuchAlgorithmException
- * @throws GeneralSecurityException
- */
- public static String getHomeIdFromToken(String token)
- throws UnsupportedEncodingException, NoSuchAlgorithmException, GeneralSecurityException {
- Decoder decoder = Base64.getDecoder();
- String enPayload = token.split("\\.")[1];
- String dePayload = new String(decoder.decode(enPayload));
- JSONObject obj = new JSONObject(dePayload);
- String encodedHomeId = obj.get("homeId").toString();
- AES256Util aes = new AES256Util();
- String homeId = aes.decrypt(encodedHomeId);
- return homeId;
- }
- }
|