vertex / app /auth.py
wudidepan's picture
Upload 16 files
aba4a8a verified
Raw
History Blame Contribute Delete
1.76 kB
from fastapi import HTTPException, Header, Depends
from fastapi.security import APIKeyHeader
from typing import Optional
from config import API_KEY # Import API_KEY directly for use in local validation
# Function to validate API key (moved from config.py)
def validate_api_key(api_key_to_validate: str) -> bool:
"""
Validate the provided API key against the configured key.
"""
if not API_KEY: # API_KEY is imported from config
# If no API key is configured, authentication is disabled (or treat as invalid)
# Depending on desired behavior, for now, let's assume if API_KEY is not set, all keys are invalid unless it's an empty string match
return False # Or True if you want to disable auth when API_KEY is not set
return api_key_to_validate == API_KEY
# API Key security scheme
api_key_header = APIKeyHeader(name="Authorization", auto_error=False)
# Dependency for API key validation
async def get_api_key(authorization: Optional[str] = Header(None)):
if authorization is None:
raise HTTPException(
status_code=401,
detail="Missing API key. Please include 'Authorization: Bearer YOUR_API_KEY' header."
)
# Check if the header starts with "Bearer "
if not authorization.startswith("Bearer "):
raise HTTPException(
status_code=401,
detail="Invalid API key format. Use 'Authorization: Bearer YOUR_API_KEY'"
)
# Extract the API key
api_key = authorization.replace("Bearer ", "")
# Validate the API key
if not validate_api_key(api_key): # Call local validate_api_key
raise HTTPException(
status_code=401,
detail="Invalid API key"
)
return api_key