/
Anna_brv
/
ASR-Service
Обзор
Документация
Войти
/
Anna_brv
/
ASR-Service
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/auth.py
45 строк
1 KB
Anna
first_commit
30 апр 2026, 21:52
30 апр 2026, 21:52
283885c
Код
Авторство
О чём код?
""" Аутентификация по API-ключу. """ from fastapi import Depends, HTTPException, Security, status from fastapi.security import APIKeyHeader from loguru import logger from .config import settings # Настройка API ключа для Swagger UI API_KEY_HEADER = APIKeyHeader( name="X-API-Key", auto_error=False, description="API ключ для аутентификации" ) def get_api_key(api_key: str | None = Security(API_KEY_HEADER)) -> str: # Если API-ключ не настроен, пропускаем проверку if not settings.api_key.get_secret_value(): logger.warning("API-ключ не настроен. Доступ открыт для всех.") return "no-key-configured" if api_key is None: logger.warning("Попытка доступа без API-ключа") raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="API-ключ не предоставлен. Используйте заголовок X-API-Key.", ) if api_key != settings.api_key.get_secret_value(): logger.warning(f"Попытка доступа с неверным API-ключом: {api_key[:8]}...") raise HTTPException( status_code=status.HTTP_403_FORBIDDEN, detail="Неверный API-ключ.", ) return api_key async def verify_api_key(api_key: str = Depends(get_api_key)) -> str: return api_key