Skip to content

FastAPI middleware that provides seamless two-factor authentication implementation. It integrates with FastAPI to offer robust 2FA protection for your application routes.

License

Notifications You must be signed in to change notification settings

rennf93/two-fast-auth

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Two-Fast-Auth Logo


PyPI version Release License: MIT CI CodeQL Docs Update Downloads

two-fast-auth is a FastAPI middleware that provides seamless two-factor authentication implementation. It integrates with FastAPI to offer robust 2FA protection for your application routes.


Documentation

📚 Full Documentation - Comprehensive technical documentation and API reference

Features

  • QR Code Generation: Automatic QR code creation for authenticator apps
  • TOTP Verification: Time-based one-time password validation
  • Recovery Codes: Secure recovery code generation and management
  • Optional Secret Encryption: Securely store and verify 2FA secrets
  • Middleware Integration: Easy integration with FastAPI routes

Installation

To install two-fast-auth, use pip:

pip install two-fast-auth

Basic Usage

from fastapi import FastAPI from two_fast_auth import TwoFactorMiddleware, TwoFactorAuth app = FastAPI() async def get_user_secret(user_id: str) -> str: # Implement your logic to retrieve user's secret from database return "user_stored_secret" # Replace with actual DB lookup app.add_middleware( TwoFactorMiddleware, get_user_secret_callback=get_user_secret, excluded_paths=["/docs", "/redoc"], header_name="X-2FA-Code", encryption_key="your-key-here" # Optional ) @app.get("/protected-route") async def protected_route(): return {"message": "2FA protected content"}

Configuration Options

TwoFactorAuth Parameters

Parameter Default Description
secret Auto-generated Base32 secret for TOTP generation
qr_fill_color "black" QR code foreground color
qr_back_color "white" QR code background color
issuer_name "2FastAuth" Name displayed in authenticator apps

TwoFactorMiddleware Parameters

Parameter Default Description
encryption_key None Encryption key for securing 2FA secrets (Fernet-compatible key)
excluded_paths ["/login", "/setup-2fa"] Paths that bypass 2FA verification
header_name "X-2FA-Code" Request header containing 2FA verification code

Advanced Configuration

# Generate and encrypt secret secret = TwoFactorAuth().secret encrypted_secret = TwoFactorAuth.encrypt_secret( secret, encryption_key="your-key-here" ) # Store encrypted secret in database async def get_user_secret(user_id: str) -> str: return await fetch_encrypted_secret_from_db(user_id) # Middleware with encrypted secrets app.add_middleware( TwoFactorMiddleware, get_user_secret_callback=get_user_secret, encryption_key="your-key-here", excluded_paths=["/healthcheck"] )

Contributing

Contributions are welcome! Please open an issue or submit a pull request on GitHub.

License

MIT License - See LICENSE for details

Author

Renzo Franceschini

Acknowledgements

About

FastAPI middleware that provides seamless two-factor authentication implementation. It integrates with FastAPI to offer robust 2FA protection for your application routes.

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages