Spaces:
Sleeping
Sleeping
File size: 1,998 Bytes
3635acb bccef3b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# import os # Supprimé car inutilisé
import logging
from typing import Optional
from fastapi import Header, HTTPException
from config.settings import API_KEY, MANAGEMENT_API_KEY
logger = logging.getLogger(__name__)
async def verify_api_key(api_key: Optional[str] = Header(None, alias="X-API-Key")):
"""Vérifie si la clé API client fournie correspond à celle configurée."""
if not API_KEY:
logger.error("API_KEY environment variable is not set. Client endpoints are unsecured!")
# Bloquer si aucune clé n'est définie pour éviter l'accès non sécurisé
raise HTTPException(status_code=503, detail="Server configuration error: API Key not set.")
# Gestion de plusieurs clés possibles séparées par des virgules
valid_keys = [key.strip() for key in API_KEY.split(',')]
if api_key is None or api_key not in valid_keys:
logger.warning("Invalid or missing client API key attempt.")
# Utiliser 403 Forbidden car l'authentification a échoué
raise HTTPException(
status_code=403,
detail="Invalid or missing API Key"
)
# logger.debug("Client API Key verified successfully.") # Optionnel: Peut être bruyant
return True # Clé valide
async def verify_management_api_key(x_api_key: Optional[str] = Header(None, alias="X-API-Key")):
"""Vérifie si la clé API de gestion fournie correspond à celle configurée."""
if not MANAGEMENT_API_KEY:
logger.warning("MANAGEMENT_API_KEY is not set. Management endpoints are inaccessible!")
raise HTTPException(status_code=503, detail="Management API key not configured on server.")
if not x_api_key or x_api_key != MANAGEMENT_API_KEY:
logger.warning("Invalid or missing management API key attempt.")
raise HTTPException(status_code=403, detail="Invalid or missing Management API Key")
# logger.debug("Management API Key verified successfully.") # Optionnel
return True # Clé valide
|