[python] FastAPI를 사용한 인증과 권한 부여

FastAPI는 간단하고 빠른 웹 애플리케이션을 빌드할 수 있는 빠르게 성장하는 Python 웹 프레임워크입니다. 이번 포스트에서는 FastAPI를 사용하여 사용자 인증 및 권한 부여를 구현하는 방법에 대해 알아보겠습니다.

1. 사용자 모델 생성

먼저, 사용자 정보를 저장할 모델을 생성합니다. 이 예시에서는 User 모델을 사용하겠습니다.

from pydantic import BaseModel

class User(BaseModel):
    username: str
    password: str
    email: str
    # 추가 필드 정의 가능

2. 사용자 등록 및 로그인 엔드포인트 생성

다음으로, 사용자 등록과 로그인을 처리할 엔드포인트를 생성합니다. FastAPI는 데코레이터를 사용하여 엔드포인트를 정의합니다.

from fastapi import FastAPI, HTTPException
from fastapi.security import OAuth2PasswordBearer

app = FastAPI()

oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")

@app.post("/register")
def register_user(user: User):
    # 사용자 등록 처리
    return {"message": "User registered successfully"}

@app.post("/login")
def login_user(user: User):
    # 사용자 인증 처리
    return {"message": "User logged in successfully"}

3. 권한 부여

사용자의 권한을 관리하기 위해 권한 부여를 처리하는 함수를 작성합니다.

from functools import wraps

def check_permission(user: User):
    # 사용자 권한 체크
    pass

4. 권한이 필요한 엔드포인트 보호

사용자의 권한을 확인하여 보호가 필요한 엔드포인트에 권한을 확인하는 미들웨어를 적용합니다.

from fastapi import Depends

async def get_current_user(token: str = Depends(oauth2_scheme)):
    # 사용자 토큰 확인
    user = { "username": "user1", "password": "password1", "email": "user1@example.com" } # 테스트용 유저 정보
    check_permission(user)
    return user

@app.get("/protected")
async def protected_route(current_user: User = Depends(get_current_user)):
    return {"message": "This is a protected route"}

결론

FastAPI를 사용하면 간단하게 사용자 인증과 권한 부여를 구현할 수 있습니다. 위 예시를 참고하여 FastAPI를 사용하여 안전하고 보안된 웹 애플리케이션을 구축해 보시기 바랍니다.

더 많은 정보를 원하시거나 실제 프로덕션 환경에 적용하기 위한 자세한 내용은 FastAPI 공식 문서를 참조하시기 바랍니다.