파이썬을 사용한 JWT 토큰 검증과 유효성 확인 방법

JWT (JSON Web Token)은 웹 응용 프로그램에서 사용자 인증 및 권한 부여를 처리하기 위한 표준 방법 중 하나입니다. JWT는 토큰 기반 인증 시스템으로, 사용자의 로그인 정보를 안전하게 전달하고 서버에서 이를 검증할 수 있는 기능을 제공합니다.

이번 글에서는 파이썬을 사용하여 JWT 토큰을 검증하고 유효성을 확인하는 방법에 대해 알아보겠습니다.

1. JWT 라이브러리 설치하기

먼저, JWT 토큰을 검증하기 위해 필요한 JWT 라이브러리를 설치해야 합니다. 파이썬에서는 PyJWT 라이브러리를 사용할 수 있습니다. 다음 명령을 사용하여 PyJWT를 설치합니다:

pip install PyJWT

2. JWT 토큰 검증하기

import jwt

def verify_token(token, secret_key):
    try:
        # 토큰 검증 및 디코딩
        decoded_token = jwt.decode(token, secret_key, algorithms=['HS256'])
        
        # 디코딩된 토큰에서 필요한 정보 추출
        user_id = decoded_token['user_id']
        username = decoded_token['username']
        
        # 유효한 토큰인 경우 사용자 정보 반환
        return {'user_id': user_id, 'username': username}
        
    except jwt.ExpiredSignatureError:
        # 토큰의 유효 기간이 만료된 경우
        return None

    except jwt.InvalidTokenError:
        # 유효하지 않은 토큰인 경우
        return None

위의 예제 코드는 verify_token 함수를 정의한 것입니다. 이 함수는 입력받은 토큰과 비밀 키를 사용하여 토큰을 검증하고, 유효한 경우 사용자 정보를 반환합니다. 유효하지 않은 토큰일 경우 None을 반환합니다.

3. 토큰 유효성 확인하기

실제로 JWT 토큰을 검증하고 유효성을 확인하기 위해서는 다음과 같은 절차를 따라야 합니다:

  1. 클라이언트에서 JWT 토큰을 생성하고 서버로 전송합니다.
  2. 서버에서는 클라이언트에서 받은 JWT 토큰과 비밀 키를 사용하여 토큰을 검증합니다. 검증 방법은 위에서 작성한 verify_token 함수를 사용하면 됩니다.
  3. 토큰이 유효한 경우, 클라이언트의 요청을 처리합니다. 유효하지 않은 경우, 에러 메시지를 반환합니다.

이렇게 JWT 토큰을 검증하고 유효성을 확인하는 방법을 간단한 예제 코드를 통해 알아보았습니다. PyJWT를 사용하면 쉽게 JWT 토큰의 유효성을 확인할 수 있습니다.

#jwt #jsonwebtoken