Autentificare HTTP Basic cu HTTPBasic în FastAPI în FastAPI

security FastAPI 0.110+ / Python 3.10+ Q&A / Distribuie cod

Configurarea autentificării standard HTTP Basic pentru panouri administrative și endpoint-uri de monitorizare internă.

Sintaxă
security = HTTPBasic() / credentials: Annotated[HTTPBasicCredentials, Depends(security)]

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"}

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Autentificare HTTP Basic cu HTTPBasic în FastAPI

Ai o nelămurire despre utilizarea comenzii Autentificare HTTP Basic cu HTTPBasic în FastAPI sau 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.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.