Egal, ob Sie ein erfahrener Entwickler sind oder gerade erst anfangen, die Sicherstellung der Sicherheit Ihrer APIs ist von entscheidender Bedeutung. FastAPI, ein modernes, schnelles (High-Performance) Web-Framework für die Erstellung von APIs mit Python 3.7+, bietet eine hervorragende Lösung. Heute werden wir uns eingehend mit den Vor- und Nachteilen der FastAPI-Authentifizierung befassen, untersuchen, wie man sie implementiert, und warum sie ein Game-Changer für Ihre Projekte ist. Außerdem werden wir uns damit befassen, wie Tools wie Apidog Ihr Leben noch einfacher machen können.
Warum FastAPI für Ihre APIs?
Bevor wir uns mit den Einzelheiten der Authentifizierung befassen, wollen wir darüber sprechen, warum Sie sich überhaupt für FastAPI entscheiden könnten. FastAPI ist so konzipiert, dass es schnell und einfach ist, sodass Sie schnell leistungsstarke APIs erstellen und bereitstellen können. Es basiert auf Starlette für die Web-Teile und Pydantic für die Datenteile, was bedeutet, dass Sie sowohl Geschwindigkeit als auch Zuverlässigkeit erhalten.

Wichtige Vorteile von FastAPI
- Performance: FastAPI ist eines der schnellsten verfügbaren Python-Frameworks.
- Benutzerfreundlichkeit: Seine Syntax ist intuitiv und unkompliziert, sodass es auch für Anfänger zugänglich ist.
- Automatische interaktive API-Dokumentation: FastAPI generiert automatisch eine interaktive API-Dokumentation mit Swagger UI und ReDoc.
- Typsicherheit: Durch die Nutzung von Python-Typ-Hinweisen gewährleistet FastAPI robusten und fehlerfreien Code.
Die Bedeutung der Authentifizierung
Beim Erstellen von APIs ist die Sicherung mit Authentifizierungsmechanismen unerlässlich, um sensible Daten zu schützen und sicherzustellen, dass nur autorisierte Benutzer auf bestimmte Endpunkte zugreifen können. Die Authentifizierung hilft, die Identität von Benutzern oder Systemen zu überprüfen, die mit Ihrer API interagieren, und bietet eine Ebene der Sicherheit und des Vertrauens.
Arten der Authentifizierung
FastAPI unterstützt mehrere Arten der Authentifizierung, darunter:
- Basic Authentication: Eine unkomplizierte Methode, die einen Benutzernamen und ein Passwort verwendet.
- OAuth2: Eine sicherere und flexiblere Methode, die häufig für die Authentifizierung durch Dritte verwendet wird.
- JWT (JSON Web Tokens): Eine kompakte und in sich geschlossene Möglichkeit, Informationen sicher zu übertragen.
Einrichten der FastAPI-Authentifizierung
Kommen wir nun zum Kern der Sache – dem Einrichten der Authentifizierung in FastAPI. Wir werden eine grundlegende Implementierung von OAuth2 mit Passwort (und Hashing) behandeln, eine der gebräuchlichsten und sichersten Möglichkeiten, die Authentifizierung zu handhaben.
Schritt 1: Installieren Sie FastAPI und Abhängigkeiten
Stellen Sie zunächst sicher, dass Sie FastAPI und die erforderlichen Abhängigkeiten installiert haben. Sie können dies mit pip tun:
pip install fastapi[all] uvicorn
Mit [all]
werden alle für die Authentifizierung benötigten Abhängigkeiten installiert, einschließlich pydantic
und python-jose
für JWT.
Schritt 2: Erstellen Sie eine einfache FastAPI-Anwendung
Beginnen wir mit einer einfachen FastAPI-Anwendung. Erstellen Sie eine Datei namens main.py
:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
Sie können diese Anwendung mit Uvicorn ausführen:
uvicorn main:app --reload
Schritt 3: Implementierung von OAuth2 mit Passwort
OAuth2 ist ein weit verbreitetes Autorisierungs-Framework, das spezifische Autorisierungsabläufe für verschiedene Arten von Anwendungen bereitstellt. Wir verwenden OAuth2 mit Passwort (und Hashing), um die Authentifizierung zu verwalten.
Erstellen von Benutzermodellen
Definieren Sie zunächst Ihre Benutzermodelle. Erstellen Sie eine Datei namens models.py
:
from pydantic import BaseModel
class User(BaseModel):
username: str
email: str
full_name: str
disabled: bool = False
class UserInDB(User):
hashed_password: str
Passwort-Hashing-Dienstprogramm
Als Nächstes benötigen Sie ein Dienstprogramm zum Hashen und Überprüfen von Passwörtern. Erstellen Sie eine Datei namens security.py
:
from passlib.context import CryptContext
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
def verify_password(plain_password, hashed_password):
return pwd_context.verify(plain_password, hashed_password)
def get_password_hash(password):
return pwd_context.hash(password)
OAuth2-Passwort-Flow
Konfigurieren Sie nun den OAuth2-Passwort-Flow. Aktualisieren Sie Ihre main.py
, um Folgendes einzuschließen:
from fastapi import Depends, HTTPException, status
from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
from jose import JWTError, jwt
from pydantic import BaseModel
from typing import Optional
import time
# Secret key to encode JWT
SECRET_KEY = "your_secret_key"
ALGORITHM = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES = 30
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
# User database simulation
fake_users_db = {
"johndoe": {
"username": "johndoe",
"full_name": "John Doe",
"email": "johndoe@example.com",
"hashed_password": "$2b$12$...",
"disabled": False,
}
}
class Token(BaseModel):
access_token: str
token_type: str
class TokenData(BaseModel):
username: Optional[str] = None
def authenticate_user(fake_db, username: str, password: str):
user = fake_db.get(username)
if not user:
return False
if not verify_password(password, user["hashed_password"]):
return False
return user
def create_access_token(data: dict, expires_delta: Optional[int] = None):
to_encode = data.copy()
if expires_delta:
expire = time.time() + expires_delta
else:
expire = time.time() + ACCESS_TOKEN_EXPIRE_MINUTES * 60
to_encode.update({"exp": expire})
encoded_jwt = jwt.encode(to_encode, SECRET_KEY, algorithm=ALGORITHM)
return encoded_jwt
@app.post("/token", response_model=Token)
async def login_for_access_token(form_data: OAuth2PasswordRequestForm = Depends()):
user = authenticate_user(fake_users_db, form_data.username, form_data.password)
if not user:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Incorrect username or password",
headers={"WWW-Authenticate": "Bearer"},
)
access_token = create_access_token(data={"sub": user["username"]})
return {"access_token": access_token, "token_type": "bearer"}
@app.get("/users/me", response_model=User)
async def read_users_me(token: str = Depends(oauth2_scheme)):
credentials_exception = HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Could not validate credentials",
headers={"WWW-Authenticate": "Bearer"},
)
try:
payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
username: str = payload.get("sub")
if username is None:
raise credentials_exception
token_data = TokenData(username=username)
except JWTError:
raise credentials_exception
user = fake_users_db.get(username, None)
if user is None:
raise credentials_exception
return user
Dieser Code richtet einen einfachen OAuth2-Passwort-Flow ein. Benutzer können ein Token erhalten, indem sie ihren Benutzernamen und ihr Passwort an den Endpunkt /token
übermitteln, und sie können dieses Token verwenden, um sich an geschützten Endpunkten wie /users/me
zu authentifizieren.
Schritt 4: Testen Ihrer Authentifizierung
Um Ihre Authentifizierung zu testen, können Sie ein API-Testtool wie Postman oder Apidog verwenden. So geht's mit Apidog:
Erstellen Sie eine neue Anfrage: Öffnen Sie Apidog und erstellen Sie eine neue Anfrage.





Verbessern Sie Ihre FastAPI-Authentifizierung mit Apidog
Während FastAPI die Einrichtung der Authentifizierung vereinfacht, können Tools wie Apidog den Prozess weiter optimieren, indem sie eine Plattform zum Entwerfen, Dokumentieren und Testen Ihrer APIs bereitstellen. Apidog bietet eine benutzerfreundliche Oberfläche zur Verwaltung Ihrer API-Endpunkte, zur Simulation von Antworten und zur Zusammenarbeit mit Ihrem Team.

Vorteile der Verwendung von Apidog
- Umfassendes API-Management: Entwerfen, testen und dokumentieren Sie Ihre APIs an einem Ort.
- Zusammenarbeit: Arbeiten Sie in Echtzeit mit Ihrem Team zusammen, teilen Sie Endpunkte und überprüfen Sie Änderungen.
- Mock-Antworten: Simulieren Sie API-Antworten zum Testen, ohne die tatsächlichen Endpunkte zu treffen.
Fazit
FastAPI vereinfacht den Prozess des Erstellens und Sicherns von APIs und macht es zu einer Top-Wahl für Entwickler, die Wert auf Leistung und Benutzerfreundlichkeit legen. Durch die Implementierung der Authentifizierung mit FastAPI stellen Sie sicher, dass Ihre APIs sicher sind und nur autorisierten Benutzern zugänglich sind. Darüber hinaus kann die Nutzung von Tools wie Apidog Ihre API-Entwicklungserfahrung verbessern, indem sie robuste Verwaltungs- und Testfunktionen bereitstellen.
Nachdem Sie nun wissen, wie Sie die FastAPI-Authentifizierung implementieren, können Sie Ihre APIs sicher sichern und Ihre Daten schützen. Viel Spaß beim Codieren!