FastAPI와 같은 웹 프레임워크에서 인증(Authentication) 및 보안(Security) 관련 기능을 구현할 때 사용
pip install "python-jose[cryptography]"
pip install "passlib[bcrypt]"
pip install python-multipart
JWT(JSON Web Totken)를 인코딩, 디코딩할 수 있게 해주는 라이브러리[예시 코드]
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]는 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
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-multipart | multipart/form-data 요청 처리 | 파일 업로드 API 등 |