- ユーザー名とパスワードによる認証: FastAPIでは、ユーザー名とパスワードを使用して認証を行うことができます。まず、FastAPIの依存関係を使用して認証機能を実装します。以下は、簡単なコード例です。
from fastapi import Depends, FastAPI
from fastapi.security import HTTPBasic, HTTPBasicCredentials
app = FastAPI()
security = HTTPBasic()
def get_current_username(credentials: HTTPBasicCredentials = Depends(security)):
username = credentials.username
password = credentials.password
# ユーザー名とパスワードの検証ロジックを実装する
# 例: データベースからユーザー情報を取得し、パスワードをハッシュ化して検証する
return username
@app.get("/protected")
def protected_route(username: str = Depends(get_current_username)):
return {"message": f"Hello, {username}!"}
上記の例では、get_current_username
関数でユーザー名とパスワードの検証ロジックを実装し、protected_route
関数で認証が必要なエンドポイントを作成しています。
- JWTトークンによる認証: FastAPIでは、JWT(JSON Web Token)を使用して認証を行うこともできます。以下は、JWTトークンを使用した認証のコード例です。
from fastapi import Depends, FastAPI
from fastapi.security import OAuth2PasswordBearer
from jose import JWTError, jwt
app = FastAPI()
security = OAuth2PasswordBearer(tokenUrl="/token")
async def get_current_username(token: str = Depends(security)):
credentials_exception = HTTPException(
status_code=401,
detail="Invalid authentication credentials",
headers={"WWW-Authenticate": "Bearer"},
)
# JWTトークンの検証ロジックを実装する
# 例: JWTトークンの署名を検証し、有効期限を確認する
return username
@app.get("/protected")
def protected_route(username: str = Depends(get_current_username)):
return {"message": f"Hello, {username}!"}
上記の例では、get_current_username
関数でJWTトークンの検証を実装し、protected_route
関数で認証が必要なエンドポイントを作成しています。
以上が、FastAPIでの認証の実装方法といくつかのコード例です。これらの方法を参考にして、FastAPIでセキュアなWebアプリケーションを開発してください。