파이썬으로 JWT 인증 구현하기

이번 블로그 포스트에서는 파이썬을 사용하여 JWT (JSON Web Token) 인증을 구현하는 방법을 알아보겠습니다.

JWT는 클라이언트와 서버 간의 인증을 위해 사용되는 토큰 기반 인증 방식입니다. 이는 서버가 토큰을 생성하고 해당 토큰이 유효한지 검증하는 방식으로 작동합니다. 따라서 클라이언트는 매 요청마다 토큰을 함께 전송해야 합니다.

파이썬에서 JWT를 사용하기 위해선 PyJWT 라이브러리를 설치해야 합니다. 다음 커맨드를 사용하여 설치할 수 있습니다:

pip install PyJWT

설치가 완료되면 다음 예제 코드를 사용하여 JWT를 생성하고 검증하는 방법을 알아보겠습니다:

import jwt

# 비밀 키 생성
secret_key = "mysecretkey"

# 페이로드 생성
payload = {
    "user_id": 1234,
    "username": "john_doe"
}

# JWT 생성
token = jwt.encode(payload, secret_key, algorithm="HS256")

# 생성된 JWT 출력
print("JWT:", token)

# JWT 검증
try:
    decoded_token = jwt.decode(token, secret_key, algorithms=["HS256"])
    print("Decoded Token:", decoded_token)
except jwt.ExpiredSignatureError:
    print("Token expired.")
except jwt.InvalidTokenError:
    print("Invalid token.")

위 예제에서는 먼저 비밀 키를 생성하고, 페이로드에 사용자 ID와 사용자명을 포함시킵니다. 그리고 jwt.encode() 메소드를 사용하여 JWT를 생성합니다. 이때 알고리즘은 HS256을 사용합니다.

생성된 JWT를 검증하기 위해 jwt.decode() 메소드를 사용합니다. 만약 토큰이 만료되었을 경우 jwt.ExpiredSignatureError 예외가 발생하고, 올바르지 않은 토큰일 경우 jwt.InvalidTokenError 예외가 발생합니다.

이제 파이썬을 사용하여 JWT 인증을 구현하는 방법을 알게 되었습니다. JWT는 간편하면서도 안전한 인증 방식으로, 많은 웹 애플리케이션에서 사용되고 있습니다.

#python #JWT #인증