Standardul HTTP Basic Authentication este util pentru protejarea endpoint-urilor interne de administrare sau a metadatelor Prometheus. Browserul afișează automat fereastra nativă de introducere a numelui de utilizator și parolei.
Clasa HTTPBasic decodifică șirul Base64 din antetul Authorization: Basic ... și expune atributele credentials.username și credentials.password. Pentru a preveni atacurile de tip Timing Attacks, verificarea parolei trebuie efectuată cu secrets.compare_digest.
Exemplu: Endpoint administrativ securizat cu HTTPBasic și secrets.compare_digest
from fastapi import FastAPI, Depends, HTTPException, status
from fastapi.security import HTTPBasic, HTTPBasicCredentials
from typing import Annotated
import secrets
app = FastAPI()
security = HTTPBasic()
def authenticate_admin(credentials: Annotated[HTTPBasicCredentials, Depends(security)]):
correct_user = secrets.compare_digest(credentials.username, "admin")
correct_pass = secrets.compare_digest(credentials.password, "parola_secreta")
if not (correct_user and correct_pass):
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Credențiale administrative incorecte",
headers={"WWW-Authenticate": "Basic"}
)
return credentials.username
@app.get("/admin/system-status")
async def system_status(admin: Annotated[str, Depends(authenticate_admin)]):
return {"message": f"Bine ai venit, {admin}!", "system": "Operațional"}
Întrebări & Exemple de Cod:
Autentificare HTTP Basic cu HTTPBasic în FastAPIAi o nelămurire despre utilizarea comenzii
Autentificare HTTP Basic cu HTTPBasic în FastAPIsau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.