JWT( Json Web Token)은 웹 애플리케이션에서 인증과 권한 부여를 처리하는 데에 사용되는 토큰입니다. 이 토큰은 특정 시간이 지나면 만료되도록 설정할 수 있고, 만료된 토큰은 더 이상 유효하지 않은 것으로 간주됩니다.
JWT 토큰 만료 처리 방법
JWT 토큰의 만료 기능을 구현하려면 다음과 같은 단계를 따를 수 있습니다:
-
JWT 토큰 생성 시, 토큰에 만료 시간(expiration time)을 포함시킵니다. 예를 들어, payload에
exp
라는 키를 추가하고 그 값으로 유효한 시간을 입력합니다.import jwt import datetime # 만료 시간 설정 payload = { 'exp': datetime.datetime.utcnow() + datetime.timedelta(minutes=30), # 추가적인 페이로드 정보... } token = jwt.encode(payload, 'secret_key', algorithm='HS256')
-
JWT 토큰이 검증될 때, 토큰의 만료 시간이 현재 시간보다 이전인지 확인합니다.
import jwt import datetime try: # 토큰 검증 payload = jwt.decode(token, 'secret_key', algorithms=['HS256']) # 만료 시간 확인 if datetime.datetime.utcnow() > datetime.datetime.fromtimestamp(payload['exp']): # 토큰 만료 return False # 토큰 유효 return True except jwt.ExpiredSignatureError: # 토큰 만료 return False except jwt.InvalidTokenError: # 토큰 검증 실패 등의 이유로 토큰이 올바르지 않음 return False
위의 예시에서 jwt
모듈은 PyJWT 라이브러리를 의미합니다. 이 라이브러리를 사용하면 JWT 토큰을 쉽게 생성하고 검증할 수 있습니다.
JWT 토큰 로깅 방법
로그는 애플리케이션의 동작과 문제를 파악하는 데에 매우 중요한 도구입니다. JWT 토큰 관련 로깅을 구현하기 위해 다음과 같은 방법을 사용할 수 있습니다:
-
토큰 생성 시 로깅: JWT 토큰 생성 시, 생성된 토큰을 로그로 남깁니다. 이를 통해 어떤 사용자가 언제 토큰을 생성했는지 추적할 수 있습니다.
import logging token = jwt.encode(payload, 'secret_key', algorithm='HS256') logger = logging.getLogger('jwt_token') logger.info(f'Token generated for user: {user_id}')
-
토큰 검증 시 로깅: JWT 토큰을 검증할 때, 검증이 성공했는지 여부를 로그로 남깁니다.
import logging try: # 토큰 검증 logger = logging.getLogger('jwt_token') logger.info(f'Token validated for user: {user_id}') except jwt.ExpiredSignatureError: # 토큰 만료 logger = logging.getLogger('jwt_token') logger.error(f'Token expired for user: {user_id}') except jwt.InvalidTokenError: # 토큰 검증 실패 등의 이유로 토큰이 올바르지 않음 logger = logging.getLogger('jwt_token') logger.error(f'Token validation failed for user: {user_id}')
위의 예시에서는 logging
모듈을 사용하여 로그를 기록하였습니다.
이와 같이 JWT 토큰의 만료 처리와 로깅을 함께 구현함으로써, 보다 안전하고 추적 가능한 웹 애플리케이션을 구현할 수 있습니다.
#jwt #token #expiration #logging