파이썬 FastAPI를 활용한 JWT 토큰 소멸 시간 설정 방법

title: 파이썬 FastAPI를 활용한 JWT 토큰 소멸 시간 설정 방법 date: 2022-10-15 tags: python, FastAPI, JWT


파이썬 FastAPI를 활용한 JWT 토큰 소멸 시간 설정 방법

이번 글에서는 파이썬 FastAPI를 사용하여 JWT(Json Web Token) 토큰의 소멸 시간을 설정하는 방법에 대해 알아보겠습니다.

JWT란 무엇인가요?

JWT는 웹 애플리케이션과 서버 간의 인증을 위해 사용되는 토큰 기반 인증 프로토콜입니다. JSON 형식으로 정보를 암호화한 토큰으로, 클라이언트 측에서 토큰을 생성하고 서버로 전송하여 인증에 사용됩니다.

FastAPI와 JWT 설정

FastAPI는 파이썬을 위한 강력한 웹 프레임워크입니다. JWT를 사용하기 위해서는 FastAPI와 JWT 라이브러리를 설치해야합니다. 아래의 명령어를 이용하여 설치할 수 있습니다.

pip install fastapi
pip install python-jose[cryptography]

JWT 토큰의 소멸 시간 설정

JWT 토큰의 소멸 시간을 설정하기 위해서는 토큰의 payload에 만료 시간을 추가해야합니다. FastAPI에서는 토큰을 발급하는 함수를 작성하고, 토큰 생성 시간과 만료 시간을 payload에 추가해주어야 합니다.

아래는 FastAPI에서 JWT 토큰을 생성하고 payload에 만료 시간을 추가하는 예제 코드입니다.

from fastapi import FastAPI
from datetime import datetime, timedelta
from jose import JWTError, jwt

app = FastAPI()

# JWT 설정
SECRET_KEY = "mysecretkey"
ALGORITHM = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES = 30

# 토큰 생성 함수
def create_access_token(data: dict, expires_delta: timedelta):
    to_encode = data.copy()
    expire = datetime.utcnow() + expires_delta
    to_encode.update({"exp": expire})
    encoded_jwt = jwt.encode(to_encode, SECRET_KEY, algorithm=ALGORITHM)
    return encoded_jwt

# 토큰 발급 API
@app.post("/token")
def login(username: str, password: str):
    # 사용자 인증 및 정보 확인
    # ...

    # 토큰 생성 및 반환
    access_token_expires = timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES)
    access_token = create_access_token({"sub": username}, access_token_expires)
    return {"access_token": access_token, "token_type": "bearer"}

위의 예제 코드에서는 create_access_token 함수를 통해 JWT 토큰을 생성하고, ACCESS_TOKEN_EXPIRE_MINUTES 변수를 통해 토큰의 만료 시간을 설정하고 있습니다. 만료 시간은 현재 시간에 ACCESS_TOKEN_EXPIRE_MINUTES 변수의 값만큼 더한 시간으로 설정됩니다.

이제 FastAPI를 실행하고 /token API를 호출하면 토큰 발급이 이루어지며, 발급된 토큰에는 설정한 만료 시간이 포함됩니다.

마무리

이번 글에서는 파이썬 FastAPI를 활용하여 JWT 토큰의 소멸 시간을 설정하는 방법에 대해 알아보았습니다. JWT 토큰을 사용하여 안전한 웹 애플리케이션을 개발할 때, 토큰의 소멸 시간을 설정함으로써 보안을 강화할 수 있습니다. FastAPI와 JWT를 함께 사용하는 것은 간편하면서도 안전한 인증 방식을 제공합니다.

#python #FastAPI #JWT #토큰소멸시간