FastAPI 에서 JWT사용-1

DEVHOB·2025년 6월 11일

FastAPI 학습 과정

목록 보기
3/6

JWT 를 FastAPI 에서 사용(auth.py)

FastAPI와 같은 웹 프레임워크에서 인증(Authentication) 및 보안(Security) 관련 기능을 구현할 때 사용

pip install "python-jose[cryptography]"

pip install "passlib[bcrypt]"

pip install python-multipart

python-jose[cryptography]

  • JWT(JSON Web Totken)를 인코딩, 디코딩할 수 있게 해주는 라이브러리
  • [cryptography]는 추가적인 보안 기능을 위해 cryptography 패지키지를 같이 설치하도록 설정한 것

주로 하는 일!

  • JWT 토큰 생성 및 검증
  • 서명(Siganture) 검증
  • 암호화/복호화 기능

[예시 코드]

from jose import JWTError, jwt

#토큰 생성
data = {"sub": "user_id_123"}
token = jwt.encode(data, "secret_key", algorithm="HS256")

# 토큰 디코딩
decoded = jwt.decode(token, "secret_key", algorithms=["HS256"])

"passlib[bcrypt]"

  • passlib는 비밀번호를 안전하게 해싱하고 검증할 수 있는 라이브러리

  • [bcrypt]는 bcrypt 알고리즘을 사용하도록 설정한 것, 매우 안전한 해시 방식

주로 하는 일!

  • 사용자 비밀번호 해싱(저장할 떄)
  • 로그인 시 비밀번호 검증

[예시 코드]

from passlib.context import CryptContext
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")

# 해시 생성
hashed_pw = pwd_context.hash("user_password")

# 비밀번호 검증
is_valid = pwd_context.verify("user_password", hashed_pw)v

python-multipart

  • FastAPI 등에서 mutipart/form-data 형식의 요청을 처리할 수 있도록 도와주는 패지키지

  • 파일 업로드나 폼 데이터를 받기위해 필요함

주로 하는 일!!

  • 클라이언트가 이미지나 파일을 업로드 할 떄 해당데이터를 파싱해서 사용할 수 있게 한다.

[예시 코드]

from fastapi import FastAPI, File, UploadFile
app = FastAPI()

@app.post("/upload/")
async def upload(file: UploadFile = File(...)):
	content = await file.read()
  return {"filename": file.filename}
모듈주요 기능언제 사용하나요?
python-jose[cryptography]JWT 생성, 검증, 암호화 등 보안 토큰 작업인증 시스템 (로그인 등)
passlib[bcrypt]비밀번호 해싱 및 검증회원가입/로그인 비밀번호 처리
python-multipartmultipart/form-data 요청 처리파일 업로드 API 등
profile
배운 내용 복습 및 새로운 내용 학습

0개의 댓글