Spaces:
Sleeping
Sleeping
File size: 1,195 Bytes
e16db8b b2e9550 e16db8b b2e9550 e16db8b b2e9550 e16db8b | 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 | #!/usr/bin/env python3
"""API authentication."""
from typing import Optional
from fastapi import HTTPException, Header, status
from config import API_KEY
from logger import setup_logger
logger = setup_logger("security.auth")
async def verify_bearer_token(authorization: Optional[str] = Header(None)) -> str:
"""Verify Bearer token."""
if not API_KEY:
logger.error("MED_SERVICE_KEY is not configured")
raise HTTPException(status_code=status.HTTP_503_SERVICE_UNAVAILABLE, detail="Service authentication is not configured")
if not authorization:
logger.warning("Missing Authorization header")
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Missing Authorization")
if not authorization.startswith("Bearer "):
logger.warning("Invalid Authorization format")
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid format")
token = authorization.replace("Bearer ", "", 1).strip()
if token != API_KEY:
logger.warning("Invalid API key attempt")
raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="Invalid API key")
return token
|