파이선 jwt 간단 정리

소요 시간: 3분

오늘은 JWT를 설치하고 사용해봤다. JWT는 웹 애플리케이션에서 사용자 인증과 정보를 안전하게 전송하는 데 필수적인 개념이다. 이 개념을 이해하기 위해 여러 가지를 정리해보았다.


라이브러리 설치

JWT를 사용하기 위해 먼저 필요한 라이브러리를 설치했다. 파이썬에서는 `PyJWT`라는 라이브러리를 주로 사용한다. 이 라이브러리를 설치하려면 터미널에서 다음 명령어를 입력하면 된다:

pip install PyJWT

이렇게 라이브러리를 설치하면 JWT를 생성하고 검증하는 데 필요한 기능을 사용할 수 있게 된다.


JWT 생성 및 서명

이제 JWT를 생성하고 서명하는 방법을 알아보았다. JWT는 사용자 정보와 유효 기간 등의 정보를 담고 있는 일종의 입장권이라고 비유할 수 있다. 아래 코드는 JWT를 생성하는 함수이다.

import jwt
import datetime

# 비밀 키: 이 키는 JWT를 서명하는 데 사용되며, 외부에 노출되지 않도록 안전하게 관리해야 한다.
SECRET_KEY = 'your_secret_key'

# JWT 생성 함수
def create_jwt(user_id):
    # 페이로드: JWT에 담길 정보
    payload = {
        'user_id': user_id,  # 사용자 ID
        'iat': datetime.datetime.utcnow(),  # 발급 시간
        'exp': datetime.datetime.utcnow() + datetime.timedelta(days=1)  # 만료 시간 (1일 후)
    }

    # JWT 생성 및 서명
    token = jwt.encode(payload, SECRET_KEY, algorithm='HS256')
    return token

# 사용 예시
user_id = 123  # 예시 사용자 ID
token = create_jwt(user_id)  # JWT 생성
print("생성된 JWT:", token)  # 생성된 JWT 출력

위 코드에서 create_jwt 함수는 사용자 ID를 입력받아 JWT를 생성한다. payload에는 사용자 ID와 함께 발급 시간(iat)과 만료 시간(exp)을 설정한다. 그런 다음 비밀 키를 사용해 JWT를 서명한다.


JWT 검증

생성한 JWT는 검증을 통해 유효성을 확인해야 한다. 검증하는 과정은 마치 영화관 직원이 입장권을 확인하는 것과 비슷하다. 아래는 JWT를 검증하는 함수이다.

# JWT 검증 함수
def verify_jwt(token):
    try:
        # JWT 디코드 및 검증
        payload = jwt.decode(token, SECRET_KEY, algorithms=['HS256'])
        return payload  # 유효한 경우 페이로드 반환
    except jwt.ExpiredSignatureError:
        return "토큰이 만료되었습니다."  # 만료된 토큰
    except jwt.InvalidTokenError:
        return "유효하지 않은 토큰입니다."  # 변조된 토큰

# JWT 검증 사용 예시
decoded_payload = verify_jwt(token)  # 생성한 JWT 검증
print("디코딩된 페이로드:", decoded_payload)  # 검증 결과 출력

위의 verify_jwt 함수는 JWT를 입력받아 유효성을 검증한다. 만약 토큰이 만료되었거나 유효하지 않은 경우, 적절한 메시지를 반환한다. 유효한 경우에는 JWT의 페이로드를 반환하여 사용자의 정보를 얻을 수 있다.


정리

오늘 공부한 내용은 JWT의 생성과 검증 과정이었다. JWT는 헤더, 페이로드, 서명으로 구성되며, 이 구조를 통해 안전하게 정보를 전달할 수 있다. 라이브러리를 설치하고, JWT를 생성하고 검증하는 코드를 작성해 보면서 실제로 어떻게 작동하는지 이해할 수 있었다.

파이썬 리스트