Study
FastAPI

Authentication dengan OAuth2 & JWT

Penjelasan

FastAPI menyediakan OAuth2PasswordBearer sebagai skema autentikasi bawaan yang terintegrasi dengan dokumentasi Swagger (muncul tombol 'Authorize'). Pola umum: endpoint /token menerima username/password dan mengembalikan JWT, lalu endpoint terproteksi memvalidasi token itu lewat dependency.

Contoh Konsep

from fastapi.security import OAuth2PasswordBearer
import jwt

oauth2_scheme = OAuth2PasswordBearer(tokenUrl='token')

def ambil_user_sekarang(token: str = Depends(oauth2_scheme)):
    try:
        payload = jwt.decode(token, SECRET_KEY, algorithms=['HS256'])
        return payload['sub']
    except jwt.InvalidTokenError:
        raise HTTPException(status_code=401, detail='Token tidak valid')

@app.get('/profil')
def profil(user: str = Depends(ambil_user_sekarang)):
    return {'user': user}

Praktikum

Buat dependency ambil_user_sekarang yang mendekode JWT dan melempar HTTPException 401 kalau token tidak valid.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Simpan SECRET_KEY di environment variable, jangan hardcode di kode — mirip prinsip yang sama di Django SECRET_KEY, karena kalau bocor, siapa pun bisa memalsukan token yang valid.