티스토리 뷰

자바 로그인 연동시 토큰을 사용할때 활용할 수 있는 JWTSigner 이다.

java-jwt-2.2.1.jar 를 다운받아 library에 넣는다.

package jwt;

import java.util.HashMap;
import java.util.Map;

import com.auth0.jwt.JWTSigner;
import com.auth0.jwt.JWTVerifier;

public class JWTSignerTest {

    public final static String DEFAULT_ISSUER = "http://yoursite";
    public final static String DEFAULT_SECRET = "aaa";
    public final static long DEFAULT_EXPTIME = 60L;     //1분
   
    public static String generateJwt() {
    String issuer = JWTSignerTest.DEFAULT_ISSUER;
String secret = JWTSignerTest.DEFAULT_SECRET;
       
        long nowMillis = System.currentTimeMillis();
        long iat = nowMillis / 1000L; // issued at claim
        long exp = iat + JWTSignerTest.DEFAULT_EXPTIME;

        JWTSigner signer = new JWTSigner(secret);
        HashMap<String, Object> claims = new HashMap<String, Object>();
        claims.put("iss", issuer);
        claims.put("iat", iat);
        claims.put("exp", exp);
       
        System.out.println("claims="+claims);

        String jwt = signer.sign(claims);
       
        System.out.println("jwt="+jwt);
       
        return jwt;
    }
   
    public static Map<String,Object> validateJwt(String jwt){
    String secret = JWTSignerTest.DEFAULT_SECRET;
    Map<String, Object> claims = new HashMap<String,Object>();
    try{
    JWTVerifier verifier = new JWTVerifier(secret);
    claims = verifier.verify(jwt);
    System.out.println("claims="+claims);
   
    long nowMillis = System.currentTimeMillis();
    long nowSec = nowMillis / 1000L;

    long lExp = 0;
    lExp = (int)claims.get("exp");
   
    System.out.println("nowMillis at validateJwt="+nowMillis);
    System.out.println("nowSec at validateJwt="+nowSec);
    System.out.println("lExp at validateJwt="+lExp);
   
    if( nowSec > lExp ){
    System.out.println("만료");
    }else{
    System.out.println("유효");
    }
   
    }catch(Exception e){
    System.out.println(e);
    }
    return claims;
    }
   
public static void main(String[] args) {
JWTSignerTest t=new JWTSignerTest();
String jwt = t.generateJwt();
t.validateJwt(jwt);
}

}

/* 결과 Result
claims={iss=http://yoursite, exp=1513658014, iat=1513657954}
jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8veW91cnNpdGUiLCJleHAiOjE1MTM2NTgwMTQsImlhdCI6MTUxMzY1Nzk1NH0.mdBA0v680iE1FNQOuSnHRr6eX4L5J7d3U7m9IGQH1Uk
claims={iss=http://yoursite, exp=1513658014, iat=1513657954}
nowMillis at validateJwt=1513657954629
nowSec at validateJwt=1513657954
lExp at validateJwt=1513658014
유효
*/
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함