티스토리 뷰
자바 로그인 연동시 토큰을 사용할때 활용할 수 있는 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
유효
*/
'자바(Java)' 카테고리의 다른 글
java foreach (0) | 2018.01.24 |
---|---|
자바 파일명에 금지 확장자 배열에 값이 있는지 체크 (0) | 2018.01.10 |
스프링 환경에서 자바 파일 다운로드 방법 (0) | 2017.12.08 |
자바 정수 랜덤 (java integer random) (0) | 2017.12.08 |
자바 오늘 날짜로 디렉토리(폴더) 만들기 (0) | 2017.12.05 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 이클립스
- C언어
- 포인터
- 라이믹스 모듈
- 프로씨
- EC
- JDBC
- 자바
- webix
- 스크래핑
- ocajp
- C
- 오라클
- 인포믹스
- Python
- xe애드온
- esql
- xe addon
- KG
- 파싱
- 자바 smtp
- 문자열
- proc
- ocjap
- 플러터
- php
- XE3
- 파이썬
- XE
- MySQL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함