지석이의 일기
JWT를 이용한 Access Token과 Refresh Token 발행 및 유효성 검사 본문
Java에서 JWT를 이용하여 Access Token과 Refresh Token을 발행하고, API 요청 시 토큰의 유효성을 검사하는 방법에 대해 알아보겠습니다.
- 의존성 추가
먼저 'jjwt' 라이브러리를 사용하기 위해 다음의 의존성을 Maven 프로젝트에 추가해야 합니다.
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
- Access Token과 Refresh Token 발행
다음은 JWT를 이용하여 Access Token과 Refresh Token을 발행하는 Java 코드입니다.
import io.jsonwebtoken.*;
import java.util.Date;
public class JwtExample {
private static final String SECRET_KEY = "SecretKey";
private static final long ACCESS_TOKEN_EXPIRE_TIME = 1000 * 60 * 30; // 30분
private static final long REFRESH_TOKEN_EXPIRE_TIME = 1000 * 60 * 60 * 24 * 7; // 7일
public static String generateToken(String subject, long expireTime) {
long nowMillis = System.currentTimeMillis();
Date now = new Date(nowMillis);
String jwtToken = Jwts.builder()
.setSubject(subject)
.setIssuedAt(now)
.setExpiration(new Date(nowMillis + expireTime))
.signWith(SignatureAlgorithm.HS256, SECRET_KEY)
.compact();
return jwtToken;
}
}
위 코드에서 generateToken 함수는 주제와 만료 시간을 매개변수로 받아 JWT 토큰을 발행합니다.
- 토큰 유효성 검사
다음은 주어진 JWT 토큰의 유효성을 검사하는 Java 코드입니다.
public static void validateToken(String jwtToken) {
try {
Jwts.parser().setSigningKey(SECRET_KEY).parseClaimsJws(jwtToken);
System.out.println("JWT Token is valid.");
} catch (ExpiredJwtException e) {
System.out.println("JWT Token is expired.");
} catch (JwtException e) {
System.out.println("JWT Token is invalid.");
}
}
validateToken 함수는 주어진 JWT 토큰의 유효성을 검사합니다. 토큰이 만료되었거나, 시그니처가 유효하지 않은 경우에는 적절한 메시지를 출력합니다.
토큰의 유효성 체크는 인터셉터에서 진행하면됩니다.
전체적인 흐름은 아래와 같습니다.
감사합니닷
'Java' 카테고리의 다른 글
Aws s3를 사용해서 파일(이미지)를 저장하자 (0) | 2024.05.14 |
---|---|
React + SpringBoot 를 사용해서 채팅을 구현해보자. WebSocket, Stomp (0) | 2024.03.21 |
ControllerAdvice을 활용해 전역 CustomException을 설정하자 (0) | 2024.01.15 |
스프링부트 와 React 연동 (0) | 2023.11.22 |
H2 DB + QueryDsl 테스트 해보자 (1) | 2023.11.12 |