Skip to content

feat: Add Basic Authentication Middleware

Yun.Long requested to merge feature/basic-auth-middleware into main

Basic Authentication Middleware

This MR adds a complete Basic Authentication middleware implementation for FastAPI.

Features

  • HTTP Basic Authentication support
  • Configurable username/password
  • Path exclusion (for health checks, docs, etc.)
  • Secure constant-time credential comparison
  • Custom authentication realm
  • Comprehensive test coverage
  • Full documentation

Files Added

  • middleware/basic_auth.py - Main middleware implementation
  • middleware/__init__.py - Package initialization
  • tests/test_basic_auth.py - Complete test suite
  • middleware/README.md - Usage documentation

Usage Example

from fastapi import FastAPI
from middleware.basic_auth import BasicAuthMiddleware

app = FastAPI()

app.add_middleware(
    BasicAuthMiddleware,
    username="admin",
    password="secret",
    exclude_paths=["/health", "/docs"]
)

Testing

All tests pass:

pytest tests/test_basic_auth.py -v

Security Notes

  • Uses secrets.compare_digest() for timing-attack prevention
  • Supports path exclusion for public endpoints
  • Should be used with HTTPS in production

Merge request reports