Firebase 인증과fastapi-cloudauth를 사용할 때의 비망록

3646 단어 #FastAPIPython
※ 급하게 쓴 내용이라 거칠게 쓴 점 양해 부탁드립니다.
Fast API와 인증 기초를 결합할 때 다양한 방법이 있는데 그 중 하나는fastapi-cloudauth 라이브러리를 사용하는 방법이다.
fastapi-cloudauth에서는 Auth0, AWS Cognito, Firebase Auth 등을 이용할 수 있지만, 이 중 Firebase Auth와 연합할 때 걸려 넘어지는 부분이 있어 메모로 남아있다.

라이브러리 설치


Firebase Auth를 사용하는 경우 fastapi-cloudauth 이외에도 cryptography 라이브러리를 동시에 가져와야 합니다.
pip install fastapi-cloudauth
pip install cryptography
※ pipp 명령을 사용했으므로, pipenv, poetry 등에서 적절한 위치에서 다시 읽으십시오.
출처

FastapI의 라우팅 설정


여기readme의 지도를 따르겠습니다.
main.py
import os
from fastapi import FastAPI, Depends
from fastapi_cloudauth.firebase import FirebaseCurrentUser, FirebaseClaims

app = FastAPI()

get_current_user = FirebaseCurrentUser(
    project_id=os.environ["PROJECT_ID"]
)


@app.get("/user/")
def secure_user(current_user: FirebaseClaims = Depends(get_current_user)):
    # ID token is valid and getting user info from ID token
    return f"Hello, {current_user.user_id}"
PROJECT_ID는 환경 변수로 설정되지만 Firebase의 프로젝트 ID입니다(아래 이미지에서는my-awesome-project).

인증 시도


Firebase의 항목 설정에서 웹 페이지 API 키를 떼어냅니다

이번 경우YOUR_WEB_API_KEY.
curl -XPOST -H "Content-type: application/json" -d '{
  "email":"YOUR_EMAIL_ADDRESS",
  "password":"YOUR_PASSWORD",
  "returnSecureToken":true
}' 'https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=YOUR_WEB_API_KEY'
YOUR_WEB_API_KEY는 아까 웹 API 키, YOUR_EMAIL_ADDRESSYOUR_PASSWORD가 각각 Firebase Auth로 만든 사용자의 정보를 입력하고 curl을 두드리면 JSON이 돌아오기 때문에 얻은 값idToken을 Fast API로 만든 API의 Bearer 부분에 미리 넣는다.

좋은 웹페이지 즐겨찾기