자바(Java)
[자바 토큰 JAVA Token] JWTSigner 사용방법
xemaker
2017. 12. 21. 07:59
자바 로그인 연동시 토큰을 사용할때 활용할 수 있는 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
유효
*/
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
유효
*/