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.
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.