이제 대충 JWT에서 알아봤으니 token 생성하고 생성된 토큰의 claim을 알아보자. 내용은 다음 url을 참조하였다.
참조: stormpath.com/blog/jwt-java-create-verify
먼저 token을 생성하는 코드다 기존소스가 버전이 올라가면서 deprecated된 메서드들이 있어 조금 수정하였다.
public class JwtGenerator {
String apikey = "jwtsigntutorialasdfasdfasdfasdfasdf";
/**
* 토큰생성
* @param id
* @param issuer
* @param subject
* @param ttlMills
* @return
*/
public String createJWT(String id, String issuer, String subject, long ttlMills) {
long nowMillis = System.currentTimeMillis();
Date now = new Date(nowMillis);
// 표준 클레임 셋팅
JwtBuilder builder = Jwts.builder()
.setId(id)
.setIssuedAt(now)
.setSubject(subject)
.setIssuer(issuer)
.signWith(getSignKey());
// 토큰 만료 시간 셋팅
if(ttlMills >= 0){
long expMillis = nowMillis + ttlMills;
Date exp = new Date(expMillis);
builder.setExpiration(exp);
}
// 토큰 생성
return builder.compact();
}
/**
* 토큰 파싱
* @param jwt
* @return
*/
public Jws<Claims> parseJwt(String jwt) {
Jws<Claims> claims = Jwts.parserBuilder()
.setSigningKey(getSignKey())
.build()
.parseClaimsJws(jwt);
return claims;
}
private Key getSignKey(){
return Keys.hmacShaKeyFor(apikey.getBytes(StandardCharsets.UTF_8));
}
}
토클을 생성하고 확인하는 코드를 작성하자
@Log
public class JwtExample {
public static void main(String[] args) {
JwtGenerator jwtGenerator = new JwtGenerator();
String generated = jwtGenerator.createJWT("jwttest","tester","jwttoken",1000);
log.info(generated);
Jws<Claims> claimsJws = jwtGenerator.parseJwt(generated);
log.info(claimsJws.getBody().toString());
}
}
생성된 토큰과 생성된 토큰으로 파싱된 결과를 볼수 있다.
INFO: eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJqd3R0ZXN0IiwiaWF0IjoxNjE2NjQzODg4LCJzdWIiOiJqd3R0b2tlbiIsImlzcyI6InRlc3RlciIsImV4cCI6MTYxNjY0Mzg4OX0.Tsd7_orxV_dHYifBIx2xKOmJsT1wQo3InH2HXWHgn-M
INFO: {jti=jwttest, iat=1616643888, sub=jwttoken, iss=tester, exp=1616643889}
'웹개발 > JWT' 카테고리의 다른 글
Java에서 JJWT(Java JSON Web Token)를 이용한 JWT(JSON Web Token) 사용방법 (0) | 2021.03.24 |
---|---|
JWT(JSON Web Token) (0) | 2021.03.22 |