FastAPIにCognito認証を導入する
FastAPIにCognito認証を導入していきます。結論から言うとFastAPI Cloud Authというパッケージを使用するだけで簡単にできます。ありがたいですね。Cognitoの設定については触れないので別の方の記事をご参照ください。
FastAPIサンプルコード
基本的にはgithubのREADMEを読んでいただければわかると思いますが、参考までにサンプルコードです。リージョンとユーザープールIDは事前に環境変数に設定しておきます。
sample_auth.py
import os
from fastapi import FastAPI, Depends
from fastapi_cloudauth.cognito import Cognito
app = FastAPI()
auth = Cognito(region=os.environ["REGION"], userPoolId=os.environ["USERPOOLID"])
@app.get("/", dependencies=[Depends(auth.claim())])
def sample():
return 'Success!'
動作確認
IDトークンの取得
get_token.py
import base64
import getpass
import json
import boto3
def cognito_auth(user, passwd):
# 認証開始
try:
cognito_idp = boto3.client('cognito-idp')
cognito_result = cognito_idp.admin_initiate_auth(
UserPoolId = "your user pool id",
ClientId = "your client id",
AuthFlow = "ADMIN_NO_SRP_AUTH",
AuthParameters = {
"USERNAME": user,
"PASSWORD": passwd,
}
)
return cognito_result
except:
# 認証失敗
return None
if __name__ == '__main__':
# cognito認証
username = input('cogito username: ')
password = getpass.getpass('cogito password: ')
cognito_result = cognito_auth(username, password)
print(cognito_result["AuthenticationResult"]["IdToken"])
Swagger UIで確認
Author And Source
この問題について(FastAPIにCognito認証を導入する), 我々は、より多くの情報をここで見つけました https://qiita.com/shoyo/items/6acdce23548975cc5e5d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .