NodeJs
Node Js로 자바에서 생성한 JWT 검증처리하기
태태개발자
2023. 5. 22. 14:47
반응형
자바 JWT 토큰 생성 및 검증
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;
public class JwtGenerationExample {
private static final String SECRET_KEY = "yourSecretKey"; // 사용할 시크릿 키
public static void main(String[] args) {
// JWT 생성
String token = createJWT("user123", "John Doe", 3600000); // 1시간 동안 유효한 토큰 생성
System.out.println("Generated JWT: " + token);
Claims claims = verifyJWT(token);
if (claims != null) {
System.out.println("Verified JWT");
System.out.println("Username: " + claims.getSubject());
System.out.println("Name: " + claims.get("name"));
System.out.println("Expiration Date: " + claims.getExpiration());
} else {
System.out.println("Invalid JWT");
}
}
// JWT 생성
public static String createJWT(String userId, String name, long ttlMillis) {
// 현재 시간을 기준으로 유효 기간 설정
long nowMillis = System.currentTimeMillis();
Date now = new Date(nowMillis);
// JWT 페이로드 생성
return Jwts.builder()
.setSubject(userId)
.claim("name", name)
.setIssuedAt(now)
.setExpiration(new Date(nowMillis + ttlMillis))
.signWith(
SignatureAlgorithm.HS256,
Base64.getEncoder().encodeToString(
SECRET_KEY.getBytes(StandardCharsets.UTF_8)
)
)
.compact();
}
// JWT 검증
public static Claims verifyJWT(String token) {
try {
return Jwts.parser()
.setSigningKey(
Base64.getEncoder().encodeToString(
SECRET_KEY.getBytes(StandardCharsets.UTF_8)
)
)
.parseClaimsJws(token)
.getBody();
} catch (Exception e) {
// 검증 실패하면 예외 발생
return null;
}
}
}
노드 토큰 생성 및 검증
const jwt = require('jsonwebtoken');
const SECRET_KEY = "yourSecretKey"; // 사용한 시크릿 키
// JWT 검증
function verifyJWT(token) {
try {
const decoded = jwt.verify(token, SECRET_KEY);
return decoded;
} catch (err) {
// 검증 실패하면 예외 발생
return null;
}
}
// JWT 생성
function createJWT(userId, name, expiresIn) {
const payload = {
sub: userId,
name: name
};
const token = jwt.sign(payload, SECRET_KEY, { expiresIn });
return token;
}
const token = createJWT('user123', 'John Doe', '1h'); // 1시간 동안 유효한 토큰 생성
console.log('Generated JWT: ', token);
const decodedToken = verifyJWT(token);
if (decodedToken) {
console.log('Verified JWT');
console.log('Username:', decodedToken.sub);
console.log('Name:', decodedToken.name);
console.log('Expiration Date:', new Date(decodedToken.exp * 1000)); // Unix timestamp를 밀리초 단위로 변환
} else {
console.log('Invalid JWT');
}
반응형