Spaces:
Sleeping
Sleeping
# 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 | |