Firebase 인증과fastapi-cloudauth를 사용할 때의 비망록
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.pyimport 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_ADDRESS
와 YOUR_PASSWORD
가 각각 Firebase Auth로 만든 사용자의 정보를 입력하고 curl을 두드리면 JSON이 돌아오기 때문에 얻은 값idToken
을 Fast API로 만든 API의 Bearer 부분에 미리 넣는다.
Reference
이 문제에 관하여(Firebase 인증과fastapi-cloudauth를 사용할 때의 비망록), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/386jp/items/df29c1ef81ff6dc8902f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
pip install fastapi-cloudauth
pip install cryptography
여기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_ADDRESS
와 YOUR_PASSWORD
가 각각 Firebase Auth로 만든 사용자의 정보를 입력하고 curl을 두드리면 JSON이 돌아오기 때문에 얻은 값idToken
을 Fast API로 만든 API의 Bearer 부분에 미리 넣는다.
Reference
이 문제에 관하여(Firebase 인증과fastapi-cloudauth를 사용할 때의 비망록), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/386jp/items/df29c1ef81ff6dc8902f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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'
Reference
이 문제에 관하여(Firebase 인증과fastapi-cloudauth를 사용할 때의 비망록), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/386jp/items/df29c1ef81ff6dc8902f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)