[python] FastAPI와 Google OAuth2의 연동

FastAPI는 간단하고 빠른 API 개발을 위한 웹 프레임워크입니다. Google OAuth2는 안전하고 사용자 인증을 위한 인기 있는 플랫폼입니다. 두 가지를 함께 사용하여 FastAPI 애플리케이션에 Google OAuth2를 연동하는 방법에 대해 알아봅시다.

1. FastAPI와 OAuth2

OAuth2는 사용자 정보에 접근하기 위한 프로토콜로, FastAPI 애플리케이션에 OAuth2를 추가하려면 fastapi-users와 같은 라이브러리를 사용할 수 있습니다. 이 라이브러리를 사용하면 사용자 인증 및 권한 부여 기능을 구현할 수 있습니다. 여기서는 Google OAuth2와 함께 사용하는 방법에 대해 설명하겠습니다.

2. Google Cloud Console에서 프로젝트 생성

Google Cloud Console에서 새 프로젝트를 생성하고, OAuth 동의 화면을 구성해야 합니다. 이때 사용자 정보에 액세스할 스코프를 설정해야 합니다.

3. Google OAuth2 클라이언트 ID 및 시크릿 키 가져오기

생성한 프로젝트에서 OAuth2 클라이언트 ID 및 시크릿 키를 가져와야 합니다. 이 정보는 FastAPI 애플리케이션에서 사용됩니다.

4. FastAPI 애플리케이션에 Google OAuth2 연동

FastAPI 애플리케이션에서 OAuth2를 연동하는 방법은 다음과 같습니다. 우선 fastapi-users 라이브러리를 설치하고, Google OAuth2를 사용할 수 있도록 설정해야 합니다. 이후에는 간단한 코드로 Google OAuth2를 통해 사용자 정보에 접근할 수 있습니다.

from fastapi_users import FastAPIUsers, models
from fastapi_users.authentication import JWTAuthentication
from fastapi_users.db import SQLAlchemyUserDatabase
from fastapi import FastAPI
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from fastapi_users.providers import GoogleOAuth2Provider

DATABASE_URL = "sqlite:///./test.db"
DATABASE_ENGINE = create_engine(DATABASE_URL)
SESSION_LOCAL = sessionmaker(autocommit=False, autoflush=False, bind=DATABASE_ENGINE)
SQLALCHEMY_BASE = declarative_base()

app = FastAPI()

# Defines the User DB
user_db = SQLAlchemyUserDatabase(models.UserDB, SQLALCHEMY_BASE, SESSION_LOCAL)

fastapi_users = FastAPIUsers(
    user_db,
    [GoogleOAuth2Provider(
        GOOGLE_CLIENT_ID,  # Google OAuth2 Client ID
        GOOGLE_CLIENT_SECRET  # Google OAuth2 Client Secret
    )],
    models.User,
    JWTAuthentication(secret="SECRET_KEY")
)

app.include_router(fastapi_users.router, prefix="/users", tags=["users"])
app.include_router(fastapi_users.current_user_router, prefix="/users", tags=["users"])
app.include_router(fastapi_users.reset_password_router, prefix="/users", tags=["users"])

5. 테스트 및 디버깅

애플리케이션을 실행하고 Google OAuth2를 통해 인증된 사용자가 접근 가능한지 테스트해야 합니다.

이제 당신의 FastAPI 애플리케이션은 Google OAuth2를 통해 안전하고 빠르게 사용자 인증을 할 수 있게 되었습니다!

참고문헌: