16 lines
478 B
Python
16 lines
478 B
Python
"""Static bearer-key authentication."""
|
|
import secrets
|
|
|
|
from fastapi import Request
|
|
|
|
from .config import Settings
|
|
from .errors import Unauthorized
|
|
|
|
|
|
def require_key(request: Request, settings: Settings) -> None:
|
|
header = request.headers.get("authorization", "")
|
|
scheme, _, token = header.partition(" ")
|
|
expected = settings.adapter_api_key
|
|
if not expected or scheme.lower() != "bearer" or not secrets.compare_digest(token, expected):
|
|
raise Unauthorized()
|